爬取豆瓣top250
试着复习了下之前学习的爬虫,在看之前一些前辈发的帖子里面有些大佬说要防止反爬,就问了下gpt,试着加入了个随机等待时间。还有有通过黛——{}{}【黎】的方式来防止不知道咋买就没用。(之前看过有那种有滑块验证、拼图验证不知道各位大神是怎么处理的{:301_1004:} )```
import random
import time
import requests
from lxml import etree
import pandas as pd
headers = {
"User-Agent": ""#填入自己选择的伪装头
}
# 存储所有电影信息的列表
all_movies = []
# 循环爬取多页数据
for i in range(0, 250, 25):# 每页有25部电影,共250部电影
url = f"https://movie.douban.com/top250?start={i}&filter="
response = requests.get(url=url, headers=headers)
html = etree.HTML(response.text)
rank = html.xpath('//div[@class="pic"]/em/text()')# 排名
name = html.xpath('//div[@class="hd"]/a/span/text()')# 电影名
score = html.xpath('//*[@id="content"]/div/div/ol/li/div/div/div/div/span/text()')# 评分
people = html.xpath('//div[@class="star"]/span/text()')# 评分人数
tu = list(zip(rank, name, score, people))
all_movies.extend(tu)
time.sleep(random.uniform(1, 2))# 1-2秒再进行一次循环
df = pd.DataFrame(all_movies, columns=['排名', '电影名', '评分', '评分人数'])
print(df)
#输出表格
df.to_excel('top250_movies.xlsx', index=False)
``` weisili2014 发表于 2024-5-10 08:57
是不是每个学习爬虫的都做过这个?
大部分应该都做过,个人认为是一个很经典的案例,还有爬取淘宝关键词下的商品信息、房产资源查找等等{:301_996:} import random
import time
import requests
from lxml import etree
import pandas as pd
from fake_useragent import UserAgent
# 生成随机的 User-Agent
ua = UserAgent()
# 存储所有电影信息的列表
all_movies = []
# 循环爬取多页数据
for i in range(0, 250, 25):# 每页有25部电影,共250部电影
url = f"https://movie.douban.com/top250?start={i}&filter="
headers = {"User-Agent": ua.random}# 随机选择一个 User-Agent
response = requests.get(url=url, headers=headers)
html = etree.HTML(response.text)
rank = html.xpath('//div[@class="pic"]/em/text()')# 排名
name = html.xpath('//div[@class="hd"]/a/span/text()')# 电影名
score = html.xpath('//*[@id="content"]/div/div/ol/li/div/div/div/div/span/text()')# 评分
people = html.xpath('//div[@class="star"]/span/text()')# 评分人数
tu = list(zip(rank, name, score, people))
all_movies.extend(tu)
time.sleep(random.uniform(1, 2))# 1-2秒再进行一次循环
df = pd.DataFrame(all_movies, columns=['排名', '电影名', '评分', '评分人数'])
print(df)
# 输出表格
df.to_excel('top250_movies.xlsx', index=False)
感谢楼主的分享 哈哈哈,这豆瓣电影遭老罪了,pythoner必爬的项目......
UA可以考虑伪造一个
from fake_useragent import UserAgent
ua = UserAgent()
print(ua.firefox)# 随机返回一个firefox浏览器user agent
print(ua.edge)
print(ua.chrome)
print(ua.safari)
感谢楼主的分享 wkdxz 发表于 2024-5-6 11:27
哈哈哈,这豆瓣电影遭老罪了,pythoner必爬的项目......
UA可以考虑伪造一个
{:301_978:}{:301_978:}入门爬取的第一个就是他 爬这个就是为了练手吧 thank you for sharing;learning :lol python爬虫入门例子 很好的学习案例