Многоуровневая / многостраничная очистка веб-страниц в Python - PullRequest
0 голосов
/ 15 января 2019

Я новичок в очистке данных, и я проверил несколько ресурсов о scrapy и Beautifulsoup, но я борюсь со следующей проблемой.

URL-адрес начальной страницы - https://www.commonfloor.com/listing-search?city=Mumbai&search_intent=sale&property_location_filter%5B%5D=region_52c256ec1614d&prop_name%5B%5D=Kandivali%20West&polygon=1&page=1&page_size=30

Мне нужна информация, такая как цена, ковер для каждого проекта, а затем нажмите на ссылку проекта

Теперь мне нужно собрать контент в разделах - Обзор, Удобства, Спецификации и т. Д., А затем вернуться на предыдущую страницу списков и повторить это для всех проектов, перечисленных на этой странице. Кроме того, нажмите следующую кнопку и повторите то же самое для всех записей.

Пожалуйста, дайте мне знать, как реализовать алгоритм очистки для этого варианта использования в python. Вот очень простой код уровня, который я пробовал:

> import pandas as pd from pandas 
> import ExcelWriter 
> import requests,re,csv from bs4 
> import BeautifulSoup
>     
> for i in range(1,5):      # Number of pages plus one 
>     
> url = "https://www.commonfloor.com/listing-search?city=Mumbai&search_intent=sale&property_location_filter%5B%5D=region_52c256ec1614d&prop_name%5B%5D=Kandivali%20West&polygon=1&page=1&page_size=30".format(i);
>     
> r = requests.get(url)    
> soup = BeautifulSoup(r.content)

1 Ответ

0 голосов
/ 18 января 2019

Это не лоскутный вопрос, поэтому вы НЕ должны включать скрап и скраб-паук в «теги» для вопроса. Вы используете BeautifulSoup (старый, который я должен добавить), поэтому документация, которую вы должны читать, это BeautifulSoup Документация .

Следуйте документации, включая установку, чтобы убедиться, что у вас установлена ​​обновленная версия BeautifulSoupSoup для BS4. Я не могу с уверенностью сказать, что вы используете старый, но новый вы используете "из bs4 import BeautifulSoup" в качестве оператора импорта. Старая версия, которую вы использовали, просто говорит «import beautifulsoup»

При вероятности звучать грубо, вы должны действительно знать, что вы используете. Я вижу, что вы не знаете, как использовать базовое форматирование строки Python и использовать циклы for. Мне показалось бы, что вы могли бы выиграть от того, чтобы дать начинающим уроки Python еще одну попытку. Это не оскорбление! Просто сказать, что это будет только в вашу пользу ТАКЖЕ ...

url = «https://www.commonfloor.com/listing-search?city=Mumbai&search_intent=sale&property_location_filter%5B%5D=region_52c256ec1614d&prop_name%5B%5D=Kandivali%20West&polygon=1&page=1&page_size=30".format(i);

enter image description here

В ЛЮБОМ СЛУЧАЕ!

Как правило, при синтаксическом анализе с помощью bs4 сначала вы делаете запрос, инициализируете bs4 в переменной при объявлении типа синтаксического анализатора ... в вашем случае это будет:

import requests
from bs4 import BeautifulSoup # NOT scrapy

# This is a for loop
for i in range(1,6):
    # Notice the '{}' inside the url string, when we use format, the argument
    # to it, i.e format(argument), is what does the formating
    url = "https://www.commonfloor.com/listing-search?city=Mumbai&search_intent=sale&property_location_filter%5B%5D=region_52c256ec1614d&prop_name%5B%5D=Kandivali%20West&polygon=1&page={}&page_size=30"
    #request is made
    req = requests.get(url.format(i))
    # Soup initialised to a variable and parsere declared. "lxml" in this case
    soup = BeautifulSoup(req.content, "lxml")
    items = soup.select(".snb-tile-info")
    # this will print the main div boxes with the info you want
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...