ssr1
从今天开始,将会和一起进步学习爬虫的小伙伴一块学习,讨论一下崔庆才的练习网站,分享一下自己在解决反爬网站的一些思路...
开始崔庆才的爬虫练习网站练习,后面会持续更新一系列关于该练习网站的每个练习案例的博客,用来练习和复习自己在细节知识点上掌握的不足。那么今天先看一下崔庆才的练习网站的一些简介:
类目
- ssr:无反爬的电影数据网站,主要根据网页的渲染方式、http协议和响应延迟进行对应的调试和设置。
- spa:同样以电影网站为例,部分无反爬,通过ajax和动态渲染响应页面数据。还有些球星数据网站,经过js渲染页面数据,这块需要一些js逆向调试的分析。
- tool(工具网站:用于获取公用的代理ip)
- captcha:验证码检测进行登录的网站,包括滑块、点选、语序验证和空间推理等验证码的校验。
- login:登录所需的参数js逆向分析。
- websocket:对websocket的底层运行逻辑需要熟悉掌握,如tcp和udp两种协议的理解,进行抓包分析。
- antispider:这里会需要用一些反爬网站的常见反爬措施,如selenium的反检测、ua、ip和频率的检测,以及爬虫进阶操作,debugger、js字符串、数组混淆和控制流扁平化反爬。
- appbasic:关于app的精简样例的逆向和hook分析。
- app:基本的app案例抓包和逆向分析。
接下来我们看一下ssr1:
该网站无反爬,只需要做一些最基本的requests请求和xpath解析即可,所有在这里就先不做具体分析,代码如下:
查看代码
import requests
from lxml import etree
"""
1、根据第一层的目录获取url请求第二层的内容,解析保存至txt文件
"""
headers = {
"Accept": "application/json, text/plain, */*",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"Cache-Control": "no-cache",
"Connection": "keep-alive",
"Pragma": "no-cache",
"Referer": "https://spa2.scrape.center/page/1",
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-origin",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57",
}
# 页面1
def get_parse_page1(i):
url = f'https://ssr1.scrape.center/page/{i}'
resp = requests.get(url=url, headers=headers)
html = etree.HTML(resp.text)
content_list = html.xpath('.//div[@class="p-h el-col el-col-24 el-col-xs-9 el-col-sm-13 el-col-md-16"]')
for data in content_list:
href = data.xpath('.//a[@class="name"]/@href')[0]
get_parse_page2(href)
# 页面2
def get_parse_page2(href):
url = f'https://ssr1.scrape.center{href}'
resp = requests.get(url, headers=headers)
html = etree.HTML(resp.text)
content_list = html.xpath('.//div[@class="p-h el-col el-col-24 el-col-xs-16 el-col-sm-12"]')
# print(resp.text)
for data in content_list:
title = data.xpath('.//a/h2/text()')[0]
# print(title)
category = data.xpath('.//div[@class="categories"]//button/span/text()')
area = data.xpath('./div[@class="m-v-sm info"]//span/text()')
content = str(data.xpath('.//div[@class="drama"]/p/text()')[0]).strip()
score = str(html.xpath('.//div[@class="el-col el-col-24 el-col-xs-8 el-col-sm-4"]/p/text()')[0]).strip()
with open(f'{title}.txt', 'a', encoding='utf-8') as f:
f.write(title + '\n' + str(category) + '\n' + str(area) + '\n' + content + '\n' + score)
print(title, category, area, score)
if __name__ == '__main__':
for i in range(10):
get_parse_page1(i)
通过运行以上代码,可以获得多个txt文件,每个文件写着电影文件标题相对应的电影内容简介。
这样就成功获取了该电影网站的信息内容,ssr1的练习到这里也就结束了。
从上面9个类目中可以看出,涉及的爬虫练习案例很全面,对自己而言有些也是没有涉及到,相信通过一步一步来,一定可以掌握这些知识的难点和解决思路。
今天对爬虫练习网站的练习和学习知识点的简单分类及规划,在空余的时间,尽可能掌握这些难点。回想以上知识点的内容和即将面临去钻研的知识点大致内容,任重道远...还希望涉及到该领域的小伙伴和大佬多多指点。