requests与Xpath 抓取豆瓣电影top250
本帖最后由 wcq15759797758 于 2021-6-27 13:54 编辑# -*-coding:utf-8 -*-
from lxml import etree # 导入etree子模块
import time # 导入时间模块
import random # 导入随机模块
import requests,json # 导入网络请求模块
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'}
# 处理字符串中的空白符,并拼接字符串
def processing(strs):
s = ''# 定义保存内容的字符串
for n in strs:
n = ''.join(n.split())# 去除空字符
s = s + n# 拼接字符串
return s # 返回拼接后的字符串
# 获取电影信息
def get_movie_info(url):
response = requests.get(url,headers=headers) # 发送网络请求
html = etree.HTML(response.text) # 解析html字符串
div_all = html.xpath('//div[@class="info"]')
for div in div_all:
names = div.xpath('./div[@class="hd"]/a//span/text()') # 获取电影名字相关信息
name = processing(names)# 处理电影名称信息
infos = div.xpath('./div[@class="bd"]/p/text()') # 获取导演、主演等信息
info = processing(infos)# 处理导演、主演等信息
score = div.xpath('./div[@class="bd"]/div/span/text()') # 获取电影评分
evaluation = div.xpath('./div[@class="bd"]/div/span/text()') # 获取评价人数
# 获取电影总结文字
summary = div.xpath('./div[@class="bd"]/p[@class="quote"]/span/text()')
print('电影名称:',name)
print('导演与演员:',info)
print('电影评分:',score)
print('评价人数:',evaluation)
print('电影总结:',summary)
print('--------分隔线--------')
if __name__ == '__main__':
for i in range(0,250,25): # 每页25为间隔,实现循环,共10页
# 通过format替换切换页码的url地址
url = 'https://movie.douban.com/top250?start={page}&filter='.format(page=i)
get_movie_info(url) # 调用爬虫方法,获取电影信息
time.sleep(random.randint(1,2)) # 等待1至3秒随机时间 xue学习一下 {:10_254:}{:10_254:} 你这一行设置传入两个参数
def get_movie_info(url,proxy):
但是后面又只传入一个参数
get_movie_info(url)
如果把函数设置为只传入一个参数url就能成功运行了
def get_movie_info(url): {:10_257:}这是写错了么
本帖最后由 wcq15759797758 于 2021-6-27 13:54 编辑
fish_nian 发表于 2021-6-27 13:45
这是写错了么
忘记改了 我加了IP地址 我发论坛的时候删了 wcq15759797758 发表于 2021-6-27 13:53
忘记改了 我加了IP地址 我发论坛的时候删了
消息提醒 wcq15759797758 发表于 2021-6-27 13:53
忘记改了 我加了IP地址 我发论坛的时候删了
{:10_298:}还是很厉害的 {:5_95:} {:10_254:} ohhh~敲敲门~ {:10_256:} 嗯,不知道什么时候能像你一样,写出这么多的代码 还能踢两年 发表于 2021-6-28 16:35
嗯,不知道什么时候能像你一样,写出这么多的代码
我也很菜 秀 {:10_266:} 涨芝士 學習一下 有几个问题不太明白, names = div.xpath('./div[@class="hd"]/a//span/text()') # 获取电影名字相关信息这里为什么span前面双斜杠呢?//div[@class="info"]和./div[@class="info"]有什么区别?希望大佬们指点指点 937135952 发表于 2021-8-15 18:06
有几个问题不太明白,这里为什么span前面双斜杠呢?//div[@class="info"]和./div[@class="info"]有什么区别 ...
a节点下的所有span节点
页:
[1]
2