我对数据抓取是陌生的,我已经检查了很少的有关scrapy和beautifulsoup的资源,但是我正为以下问题而苦苦挣扎。
我想要每个项目的价格,地毯等信息,然后单击项目链接
现在,我需要收集“概述”,“便利设施”,“规格”等部分中的内容,然后返回上一个列表页面,并对该页面上列出的所有项目重复此操作。另外,点击下一步按钮,并对所有条目重复相同的操作。
请让我知道如何在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)
答案 0 :(得分:1)
这不是一个棘手的问题,因此,您不应在该问题的“标签”上包含“ scrapy和scrapy-spider”。您正在使用BeautifulSoup(我应该添加旧的),因此您应该阅读的文档是BeautifulSoup documentation。
按照文档(包括安装)进行操作,以确保您具有BeautifulSoupSoup的更新的BS4版本。我不能肯定地说您正在使用旧版本,但是新版本使用“ from bs4 import BeautifulSoup”作为导入语句。您使用的旧版本只是说“导入beautifulsoup”
听起来很刺耳,您应该真正了解自己在使用什么。我看到您不清楚如何使用基本的python字符串格式和使用for循环。在我看来,您可以从再次尝试python的初学者课程中受益。那不是放下心!只是说这只会对您有利。还...
在任何情况下!
通常,当您首先使用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