首页 / 爬虫 / python爬虫基础
python爬虫基础
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python爬虫基础,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4087字,纯文字阅读大概需要6分钟。
内容图文
与爬虫性能相关:并发方案(类似多线程)。在网络延迟的时候继续发送其他请求,即异步IO:gevent/ Twisted/ asyncio/ aiohttp
IO多路复用:select
Scrapy框架:
Tornado框架(异步非阻塞)
爬虫实例之汽车信息
requests是请求访问网站的模块:
使用方法有requests.get(url);请求获取的内容递给response,有response.text, response.content, response.encoding, response.apparent_encoding, response.status_code等
BeautifulSoup是解析网站的模块:
soup=BeautifulSoup(response.text,features='html.parser'或者'lxml')
soup.find('div')
soup.find('div',id='i1') #使用多参数
soup.find('div',nid='i1')
soup.find_all('div') #返回列表
print(soup.find。。。)
1 import requests 2 from bs4 import BeautifulSoup 3 import uuid #随机取名库 4 5 url='https://www.autohome.com.cn/news/' 6 response=requests.get(url)#获取url 7 response.encoding=response.apparent_encoding#设置网页编码格式,防止乱码 8 soup=BeautifulSoup(response.text,features='lxml') 9 target=soup.find(id='auto-channel-lazyload-article')#div标签内容 10 li_list=target.find_all('li')#找到所有li标签的内容 11 for i in li_list: 12 a=i.find('a') 13 if a: #若li标签下有a标签则获取内容 14 print('https:'+a.attrs.get('href')) 15 text=a.find('h3').text #将text转换成字符串类型,若无.text,则为标签类型 16 print(text,type(text)) #查看什么类型 17 img_url=a.find('img').attrs.get('src') 18 print('https:'+img_url) 19 img_response=requests.get(url='https:'+img_url) 20 file_name=str(uuid.uuid4())+'.jpg' 21 with open(file_name,'wb') as f: 22 f.write(img_response.content)
自动登录
要想实现自动登录,就必须拿到授权的cookies。有时候需要先发送一个请求,获取cookies,再用这个去登录;但往往直接发送登录请求,也能获得授权的cookies,并用这个实现自动登录。
1 import requests 2 3 r1=requests.get('https://dig.chouti.com/') 4 r1_cookies=r1.cookies.get_dict()#获取第一个cookies 5 print(r1_cookies) 6 7 post_dict={'phone':'+8618059265202', 8 'password':'cz19960000' 9 } 10 r2=requests.post(url='https://dig.chouti.com/login',data=post_dict,cookies=r1_cookies)#需要携带第一次的cookies 11 print(r2.text) 12 r2_cookies=r2.cookies.get_dict()#获取第二次的cookies 13 print(r2_cookies) 14 15 r3=requests.get(url='https://dig.chouti.com/link/vote', cookies=r1_cookies)#携带cookies自动点赞 16 print(r3.text)
requests模块的用法有requests.get(), requests.post(), requests.options(), requests.request()等,它们都要调用request,故可以归结为requests.request(),其中参数有method(如get,post等),url,params(在url上传递的参数)
-method -url -params
-data :在请求体里传递的数据,data={'user':'alex', 'pwd':'123'}或者data='user=alex&pwd=123',传递时有请求头和请求体,根据请求头决定是否发送请求体(user=alex&pwd=123),
字典数据里面不能套用字典
-json:也是在请求体里传递的数据,json={'user':'alex', 'pwd':'123'},与data传递数据的格式不同,json直接将数据转换成一个整体的字符串’{'user':'alex', 'pwd':'123'}‘发送过去,请求体和
请求头和data不同,字典里面可以嵌套字典
-headers: 包含登录前访问的地址,网站判断是否人工登录时,会先检测上一个网址是不是它的地址,是则可以登录,这个网址保存在登录操作时的Refer中; 而User-Agent则说明是在哪个
浏览器登录的,因此可以更改User-Agent伪造登录机器。如headers={'Refer‘:'https://github.com/', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
-cookies: 存放在headers中
-files: 传递的文件参数,files={'f1': open('s1.py', 'rb'), 'f2': open('s2.py', 'rb)}, file中的元素也可以是元组,如'f2': ('ss.py',open('s2.py', 'rb)),第一个参数作为文件名上传
-auth: 携带用户名和密码加密到请求头
-allow_redirect(是否允许重定向) , -proxies(代理), -verify(是否忽略证书), -stream(大容量文件迭代传输), -cert(证书)
-session: 自动处理cookies,而不用自己每次手动传递cookies,
1 import requests 2 session=requests.Session()
3 post_dict={'phone':'+8618059265202',
'password':'cz19960000'
}
4 r1=session.get('https://dig.chouti.com/') 5 r2=session.post(url='https://dig.chouti.com/login',data=post_dict)
举例:requests.request('get', url='https://www.baidu.com', params={'k1':'v1', 'k2':'v2'}, data={'user':'alex', 'pwd':'123'}, json={'user':'alex', 'pwd':'123'},
headers={'Refer‘:'https://github.com/'}) #https://www.baidu.com?k1=v1&k2=v2
内容总结
以上是互联网集市为您收集整理的python爬虫基础全部内容,希望文章能够帮你解决python爬虫基础所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。