python爬虫-爬取豆瓣王祖贤海报


常用工具介绍

爬虫常用的解析工具工具介绍
lxml利用当中的xpath语句,定位网页位置,适合单个爬取
beautifulsoup“心灵鸡汤”,对于网页列表较为敏感,适合列表形式的批量爬取
re对于字符串处理非常强大,可是直接用正则匹配式来获取
selenium对于动态网页,可以利用其中的webdriver工具,来实现分页操作和加载过程
requests这是向服务器请求的工具,类似的还有urllib库
json对于以网页json格式存在的信息处理记为有效,可以不用利用以上各种工具就能快速获取信息

导入相应的包

# coding=utf-8
import requests
from urllib import request
import json
from lxml import etree
query = '王祖贤'

下载图片

''' 下载图片 '''
def download(src, id):
    dir = '王祖贤/' + str(id) + '.jpg'
    try:
        pic = requests.get(src, timeout=10)
        fp = open(dir, 'wb')
        fp.write(pic.content)
        fp.close()
    except requests.exceptions.ConnectionError:
        print('图片无法下载')

批量爬取保存

''' for 循环 请求全部的 url '''
#爬取1000条为例,数据太多麻烦
for i in range(0, 1000, 20):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'}
    url = 'https://www.douban.com/j/search_photo?q=' +'%E7%8E%8B%E7%A5%96%E8%B4%A4'+'&limit=20&start=' +str(i)
    # print(url)
    html = requests.get(url,headers=headers).text    # 得到返回结果
    # print(html)
    response = json.loads(html,encoding='utf-8') # 将 JSON 格式转换成 Python 对象
    # print(response)
    for image in response['images']:        #获得当前字典
        # print(image['src']) #查看当前下载的图片网址
        download(image['src'], image['id'])      #下载一张图片

用xpath获取

# start表示起始页 一共有六页 最大为75
for s in range(0,76,15):
    url = "https://search.douban.com/movie/subject_search?search_text=%E7%8E%8B%E7%A5%96%E8%B4%A4&cat=1002&start=0"
    html = request.urlopen(url).read().decode("utf-8")
    selector = etree.HTML(html)
    srcs = selector.xpath("//div[@class='item-root']/a[@class='cover-link']/img[@class='cover']/@src")
    titles = selector.xpath("//div[@class='item-root']/div[@class='detail']/div[@class='title']/a[@class='title-text']")
    for src,title in (zip(srcs,titles)):
        download(src,title.text)

爬取结果

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值