python爬取豆瓣 css
时间: 2023-09-26 13:14:32 浏览: 82
好的,下面是一个使用Python爬取豆瓣电影TOP250的示例代码,并使用CSS选择器来解析HTML文档。在这个代码中,我们使用了requests模块来发送HTTP请求,使用lxml库来解析HTML文档。
```python
import requests
from lxml import etree
url = "https://movie.douban.com/top250"
def get_movies(url):
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
response = requests.get(url, headers=headers)
html = etree.HTML(response.text)
movie_list = html.cssselect(".hd")
movies = []
for movie in movie_list:
title = movie.cssselect("span")[0].text.strip()
link = movie.cssselect("a")[0].get("href")
movies.append({"title": title, "link": link})
return movies
movies = []
for i in range(0, 250, 25):
url = "https://movie.douban.com/top250?start=" + str(i) + "&filter="
movies.extend(get_movies(url))
for movie in movies:
print(movie["title"], movie["link"])
```
在这个代码中,我们使用lxml库解析HTML文档,使用CSS选择器来查找需要的元素。我们首先使用requests模块发送HTTP请求,并使用etree.HTML()函数将返回的HTML文档解析成一个Element对象。然后,我们使用CSS选择器查找所有class为“hd”的元素,从中提取电影的标题和链接,并将它们保存在一个字典中。最后,我们将所有电影信息保存在一个列表中,并返回该列表。
在主函数中,我们遍历所有电影页面,调用get_movies()函数获取电影信息,并将它们保存在一个列表中。最后,我们遍历所有电影信息,并将电影的标题和链接打印出来。
需要注意的是,豆瓣网站对爬虫有限制,如果频繁访问会被封禁IP,因此在实际应用中需要注意控制爬虫的访问频率。同时,豆瓣网站的数据也受到版权保护,不应该用于商业用途。
阅读全文