吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4955|回复: 16
收起左侧

[Python 转载] 《Python3网络爬虫开发实战(第二版)》案例SSR代码编写

[复制链接]
bags 发表于 2021-10-27 23:50
本帖最后由 bags 于 2021-10-28 00:53 编辑

今天在论坛上看到这个网站:https://scrape.center/,打算跟着他的案例学习python爬虫!

SSR1:电影数据网站,无反爬,数据通过服务端渲染,适合基本爬虫练习。
[Python] 纯文本查看 复制代码
from requests_html import HTMLSession
import json

def main():
    session = HTMLSession()
    data_all = []
    for i in range(1,2):
        try:
            url = 'https://ssr1.scrape.center/detail/{}'.format(i)
            req = session.get(url)
            name = req.html.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/a/h2/text()')[0]
            label_all = req.html.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/div[1]/button/span/text()')
            label = "、".join(label_all)
            country = req.html.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/div[2]/span[1]/text()')[0]
            duration = req.html.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/div[2]/span[3]/text()')[0]
            time = req.html.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/div[3]/span/text()')[0]
            introduce = req.html.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/div[4]/p/text()')[0]
            data = {
                'name':name,
                'label':label,
                'country':country,
                'duration':duration,
                'time':time,
                'introduce':introduce
            }
            data_all.append(data)
            print("当前进度{}%".format(i))
        except:
            print("当前进度{}%,出错".format(i))
            with open("./爬虫练习/SSR1/error.txt","a+",encoding="utf-8") as f:
                f.write("出错页数:"+str(i))
    
    data_json = json.dumps(data_all,ensure_ascii=False)
    with open("./爬虫练习/SSR1/data.json","w",encoding="utf-8") as f:
        json.dump(data_json,f,ensure_ascii=False)
    
        


        


if __name__ == '__main__':
    main()





SSR2:电影数据网站,无反爬,无 HTTPS 证书,适合用作 HTTPS 证书验证。
IDA console, courier new, monospace">这个没感觉什么不同,用ssr1代码也能实现




SSR3: 电影数据网站,无反爬,带有 HTTP Basic Authentication,适合用作 HTTP 认证案例,用户名密码均为 admin。
通过控制台抓包发现:请求标头增加了Authorization: Basic YWRtaW46YWRtaW4=
初步判断是base64加密,百度解密得:admin:admin
思路:直接增加请求头即可
[Python] 纯文本查看 复制代码
from requests_html import HTMLSession
import json

def main():
    session = HTMLSession()
    data_all = []
    for i in range(1,3):
        try:
            header = {'Authorization': 'Basic YWRtaW46YWRtaW4='}
            url = 'https://ssr3.scrape.center/detail/{}'.format(i)
            req = session.get(url,headers=header)
            name = req.html.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/a/h2/text()')[0]
            label_all = req.html.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/div[1]/button/span/text()')
            label = "、".join(label_all)
            country = req.html.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/div[2]/span[1]/text()')[0]
            duration = req.html.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/div[2]/span[3]/text()')[0]
            time = req.html.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/div[3]/span/text()')[0]
            introduce = req.html.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/div[4]/p/text()')[0]
            data = {
                'name':name,
                'label':label,
                'country':country,
                'duration':duration,
                'time':time,
                'introduce':introduce
            }
            data_all.append(data)
            print("当前进度{}%".format(i))
        except:
            print("当前进度{}%,出错".format(i))
            with open("./爬虫练习/SSR3/error.txt","a+",encoding="utf-8") as f:
                f.write("出错页数:"+str(i))
    
    data_json = json.dumps(data_all,ensure_ascii=False)
    with open("./爬虫练习/SSR3/data.json","w",encoding="utf-8") as f:
        json.dump(data_json,f,ensure_ascii=False)
    


if __name__ == '__main__':
    main()



SSR4:电影数据网站,无反爬,每个响应增加了 5 秒延迟,适合测试慢速网站爬取或做爬取速度测试,减少网速干扰。
因为没有书,没有琢磨出来题目什么意思,有了解的朋友可以一起学习下

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
yjn866y + 1 + 1 热心回复!
5omggx + 1 + 1 用心讨论,共获提升!
Lucifer_BW + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| bags 发表于 2021-10-28 10:01
a15015073001 发表于 2021-10-28 09:31
当前进度那里 i 不是 1-3 嘛 所以打印不应该是 1%-3% ?
不应该在前面处理一下 i / 3 ?

数据是100页,然后我改成3页,忘记改了
CCQc 发表于 2021-10-28 00:21
优秀东 发表于 2021-10-28 00:27
mortai 发表于 2021-10-28 00:29
感谢分享 学习
天心阁主 发表于 2021-10-28 00:48
谢谢分享有用知识
Nophy 发表于 2021-10-28 07:54
感谢分享知识
Wapj_Wolf 发表于 2021-10-28 08:04
感谢楼主分享干货
yhgfwly007 发表于 2021-10-28 08:30
学知识了,感谢分享!
qianshijiuge 发表于 2021-10-28 08:33
感谢分享
liubing3613 发表于 2021-10-28 08:42
看看实战爬取经验,感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表