这是我第一次使用Python和网页抓取。一直在环顾四周,仍然无法得到我需要做的事情。
以下是我通过Chrome使用的元素的打印屏幕。
正如您所看到的,它来自下拉公寓'。
我尝试做的第一步是从下拉列表中获取城市列表
然后我的第二步,从给定的城市列表,到他们每个人(... url ... / Brantford /例如)
然后,我的第三步,根据可用的公寓,点击每个可用的公寓,以获得每种卧室类型的价格范围
目前,我只是试图“循环”。通过第一步的城市,它不起作用。
如果有一个很好的论坛,文章,教程等对我这样的初学者来说有用的阅读和学习,请你帮我解决一下。我真的很想在这方面做得好,以便有一天我可以把我带到社会。
谢谢!
import requests
from bs4 import BeautifulSoup
url = 'http://www.homestead.ca/apartments-for-rent/'
response = requests.get(url)
html = response.content
soup = BeautifulSoup(html,'lxml')
dropdown_list = soup.find(".child-pages dropdown-menu a href")
print (dropdown_list.prettify())
答案 0 :(得分:0)
您可以通过类和子“a”节点访问元素。然后访问属性“href”并添加域名。
import requests
from bs4 import BeautifulSoup
url = 'http://www.homestead.ca/apartments-for-rent/'
response = requests.get(url)
html = response.content
soup = BeautifulSoup(html,'lxml')
dropdown_list = soup.select(".primary .child-pages a")
links=['http://www.homestead.ca'+x['href'] for x in dropdown_list]
print (links)
city_names=[x.text for x in dropdown_list]
print (city_names)
result=[]
for link in links:
response = requests.get(link)
html = response.content
soup = BeautifulSoup(html,'lxml')
...
result.append(...)
说明:
soup.select(".primary .child-pages a")
使用CSS选择器我选择“a”节点作为节点的子节点,其类为“child-pages”,它是具有“primary”类的节点的子节点。有两个节点具有类“子页面”,我过滤了一个节点下的“主”类。
[x.text for x in dropdown_list]
这是Python中的列表理解。这意味着我选择了dropdown_list的所有元素,然后只获取每个元素的属性文本,然后作为列表返回。
然后,您可以迭代链接并将数据附加到列表(此处为“结果”)。
我发现BeautifulSoup的介绍相当不错,但没有通过链接:http://programminghistorian.org/lessons/intro-to-beautiful-soup
我还建议你读一本书。例如,这一个:Web Scraping with Python: Collecting Data from the Modern Web