淘票票经典Python爬虫案例

本demo使用python来爬取淘票票热门电影的相关信息
代码如下:

import requests
from requests.exceptions import RequestException
from pyquery import PyQuery as pq
import json

# 获取爬取的页面html代码
def get_one_page(url):
  headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
  try:
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
      return response.text
    return None
  except RequestException:
    return None
    
# 获取从html里有用的数据
def parse_one_page(html):
  doc = pq(html)
  lists = doc('.tab-movie-list').eq(0)
  titles = lists.find('.bt-l')
  scores = lists.find('.bt-r')
  list2 = lists.find('.movie-card-list')
  authors =list2.find('span:nth-child(1)')
  actors = list2.find('span:nth-child(2)')
  types = list2.find('span:nth-child(3)')
  areas = list2.find('span:nth-child(4)')
  languges = list2.find('span:nth-child(5)')
  durations = list2.find('span:nth-child(6)')
  for index in range(titles.length):
    yield {
      'title': titles.eq(index).text(),
      'score': scores.eq(index).text(),
      'director': authors.eq(index).text()[3:],
      'actor': actors.eq(index).text()[3:],
      'type': types.eq(index).text()[3:],
      'region': areas.eq(index).text()[3:],
      'language': languges.eq(index).text()[3:],
      'duration': durations.eq(index).text()[3:],
    }

# 写入本地,以文本形式保存
def write_to_file(content):
  with open('淘票票热门电影.txt', 'w', encoding='utf-8') as f:
    f.write(json.dumps(content, ensure_ascii=False) + '\n')
    f.close()

# 主函数
def main():
  url = 'https://dianying.taobao.com/showList.htm?spm=a1z21.3046609.w2.3.50af112aVyLbGL&n_s=new'
  html = get_one_page(url)
  parse_one_page(html)
  print(parse_one_page(html))
  li = []
  for item in parse_one_page(html):
    li.append(item)
    print(item)
  write_to_file(li)

if __name__=='__main__':
  main()

1.首先需要安装python环境,直接下载python安装即可

2.这里需要用到requests模块和PyQuery模块,使用 pip install 模块名 安装即可,如果下载过慢或出现错误可以从清华大学镜像拉取安装:使用
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 模块名 安装即可

3.代码解释

函数 get_one_page 获取要爬取网页的html代码
有些网站的请求可能需要headers参数才能正常访问,所以在请求的时候加上headers的User-Agent参数即可。
首先尝试使用requests模块去请求要爬取的页面,如果状态码返回200,则返回html页面代码,否则抛出异常

函数 parse_one_page 从html代码里获取有用的相关信息,并返回可保存的数据形式
这里使用PyQuery模块,如果熟悉Jquery,那么这个也容易上手,因为其api基本上和Jquery是一样的,使用此模块获取相关数据是很方便的,就像操纵DOM一样,如果使用正则表达式(re模块),就没有那么简单直观了,也不好理解,容易出错。使用PyQuery获取完成之后,使用循环,每循环一次返回一个字典结构,里面定义了相关键名用来保存爬取的对应内容

函数 write_to_file 把爬取的数据以文本的形式保存到本地,这个函数没太多说明的,熟悉python I/O相关api即可,另外里面使用了json模块,将传入的内容以json字符串的形式保存

函数 main 为主函数 其中:url为要爬取的目标网页,li为一个列表,我们循环parse_one_page返回的结果,将每条数据插入li列表,然后将li传入write_to_file函数,最终会返回一个标准json字符串,即一个数组里面包含多个对象的形式,以便他人使用

最后在入口执行主函数,就能得到想要的结果了

4.由于疫情的影响,淘票票电影排行页面没有数据,这里我贴了

总结:python用来写爬虫是很方便的,整个小demo只使用了60行不到的代码就能完成爬取功能。除此之外,python的语法跟javascript语法比较接近,如果熟悉js的,那么学习python也是比较容易的。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值