python爬虫初了解
python爬虫
- 网络爬虫是一种按照一定的规则,自动地抓取万维网地程序或者脚本
- 爬虫的基本思路
①构造目标网址
②发起请求(使用request模块),相当于点开网页
③获取网页内容
④定制筛选器,对内容进行筛选(正则)
⑤把爬取的结果保存到容器里
request模块
request是使用apach2 licensed许可证的http库,支持http连接保持和连接池,支持使用cookie保持会话,文件上传,自动响应内容的编码,还有国际url和post数据自动编码
- 利用request模块get请求网站:
r = request.get('url')
post请求:r=request.post('url')
请求下来的r对象具有多种访问方法,r.text就是正文内容
但是爬虫有个问题,爬虫所发的http request包里的user-agent: python-requests/2.21.0
具有明显的爬虫特征,就像awvs扫描器ua头带有awvs一样,很容易被封掉
向网站发起http请求代码:
import requests
payload={'a':1,'b':2}#字典
proxies1 = {
"http": "http://127.0.0.1:8080",#本地socket
"https": "http://10.10.1.10:1080",#代理socket
}
res1 = requests.get('http://目标ip/1.txt',proxies=prixies1)#get请求
res2 = requests.post('http://目标ip/1.txt',data=payload)#POST请求至少要带一个参数
print res1.text#返回正文内容
print res1.url#返回url
实战
扫描一个网站的实例:(比如网站为www.csdn.net)
现在的需求是扫描出网站每页的html代码(不知道http请求的前往http协议补课)
写爬虫步骤:
- 找到页面切换的变量在哪个链接
- 找到页面切换的变量和其他一起访问时要提交的数据
#!usr/bin/python
import requests
import json
import urllib
def page(i):
get_hearder = {
"Host": "www.csdn.net",
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4464.5 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
"Accept-Encoding": "gzip, deflate, br",
"Connection": "keep-alive",
"Upgrade-Insecure-Requests": "1",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Sec-Fetch-User": "?1"
#构造一个post请求包,注意http头和数据要双引号
}
data_post= {'courseTage':'','courseDiffcuty':'','pageIndex':i}
#页数是pageIndex,还要其他一些需要爬取的信息
rep = request.post('https://www.csdn.net/courses/ajaxcourses,headers=get_header,data=data_post)#页面切换的代码在ajaxCourses
data=json.loads(rep.text)#返回结果为Json格式,用json的load处理
for name in data['course']['result']:
print (name['courseName'])#courseName字段在result下,result字段在course下,他们之间的关系类似一级二级三级标签
for i in range(1,19):
lesson(i)#19为总页数,遍历页数i提交数据包
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通