/2 项目目标/ 获取猫眼电影的即将上映的电影详情。 /3 项目准备/ 软件:PyCharm 需要的库:requests、lxml、random、time 插件:Xpath 网站如下: https:///films?showType=2&offset={} 点击下一页的按钮,观察到网站的变化分别如下: https:///films?showType=2&offset=30https:///films?showType=2&offset=60https:///films?showType=2&offset=90 点击下一页时,页面每增加一页offset=()每次增加30,所以可以用{}代替变换的变量,再用for循环遍历这网址,实现多个网址请求。 /4 项目实现/ 1、定义一个class类继承object,定义init方法继承self,主函数main继承self。导入需要的库和网址,代码如下所示。 import requests from lxml import etree
import time import random
class MaoyanSpider(object): def __init__(self): self.url = 'https:///films?showType=2&offset={}'
def main(self): pass
if __name__ == '__main__': spider = MaoyanSpider() spider.main() 2、随机产生UserAgent。for i in range(1, 50): # ua.random,一定要写在这里,每次请求都会随机选择。 self.headers = { 'User-Agent': ua.random, } 3、发送请求,获取页面响应。def get_page(self, url): # random.choice一定要写在这里,每次请求都会随机选择 res = requests.get(url, headers=self.headers) res.encoding = 'utf-8' html = res.text self.parse_page(html) 4、xpath解析一级页面数据,获取页面信息。1)基准xpath节点对象列表。 # 创建解析对象parse_html = etree.HTML(html)# 基准xpath节点对象列表dd_list = parse_html.xpath('//dl[@class='movie-list']//dd') 2)依次遍历每个节点对象,提取数据。 for dd in dd_list: name = dd.xpath('.//div[@class='movie-hover-title']//span[@class='name noscore']/text()')[0].strip() star = dd.xpath('.//div[@class='movie-hover-info']//div[@class='movie-hover-title'][3]/text()')[1].strip() type = dd.xpath('.//div[@class='movie-hover-info']//div[@class='movie-hover-title'][2]/text()')[1].strip() dowld=dd.xpath('.//div[@class='movie-item-hover']/a/@href')[0].strip() # print(movie_dict) movie = '''【即将上映】 5、定义movie,保存打印数据。
6、random.randint()方法,设置时间延时。time.sleep(random.randint(1, 3)) 7、调用方法,实现功能。html = self.get_page(url)self.parse_page(html) /5 效果展示/ 1、点击绿色小三角运行输入起始页,终止页。 2、运行程序后,结果显示在控制台,如下图所示。 3、点击蓝色下载链接, 网络查看详情。 /6 小结/ 1、不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。 2、本文基于Python网络爬虫,利用爬虫库,实现爬取猫眼电影。 3、欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。 4、猫眼电影代码链接:,https://github.com/cassieeric/python_crawler/tree/master/MaoyanMovie,觉得不错,记得给个star噢。 |
|