python爬虫学习笔记(一)

目前正在学习python爬虫,在网上找了一些很基础的课程,在这里做点笔记分享。

需要的模块有:

from urllib import request
import re #正则表达试
import random

from urllib import request老师说这里可以写成:import urllib.request,不过我在使用后者写法的时候调用:request.Request()会显示NameError: name ‘request’ is not defined,我研究了半天是一脸的懵,后来没法只能换成第一种写法才没有报错!我怀疑是我的电脑配置问题。

爬虫机制分为两个部分:请求和响应
在发起请求前需要做两件事情:

ur1=r"http://www.baidu.com/"#要爬的的网址
#反爬虫机制:判断用户是否是浏览器访问。可以通过伪装浏览器进行访问
#伪装浏览器User-Agent,然后随机选择User-Agent访问,避免触碰反爬虫机制手段之一
agent1="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
agent2="Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.7 (KHTML, like Gecko) Chrome/20.0.1099.0 Safari/536.7 QQBrowser/6.14.15493.201"
agent3="Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.15"
agent4="Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36"
agent5="Mozilla/5.0 (Linux; U; Android 8.1.0; zh-CN; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/11.9.4.974 UWS/2.13.1.48 Mobile Safari/537.36 AliApp(DingTalk/4.5.11) com.alibaba.android.rimet/10487439 Channel/227200 language/zh-CN"
list1=[agent1,agent2,agent3,agent4,agent5]
agent=random.choice(list1)#随机
print(agent)

构造请求头和请求自定义请求对象

header={"User-Agent":agent}
req=request.Request(ur1,headers=header)

发送请求和数据清洗

reponse=request.urlopen(req).read().decode() #urlopen:给服务器发送请求  .read#读取服务器发来的信息,然后赋值给reponse
#decode 解码  编码cncode()

pat=r"(.*?)"#通过正则表达式进行数据清洗,获取title中间的信息
data=re.findall(pat,reponse)
print(data[0])

最后的结果:

Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.15
百度一下,你就知道
[Finished in 1.1s]
Mozilla/5.0 (Linux; U; Android 8.1.0; zh-CN; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/11.9.4.974 UWS/2.13.1.48 Mobile Safari/537.36 AliApp(DingTalk/4.5.11) com.alibaba.android.rimet/10487439 Channel/227200 language/zh-CN
百度一下
[Finished in 2.4s]

总结:
重点:
1.random.choice()随机选择
2.request.Request()创建请求
3.request.urlopen().read().decode()给服务器发送请求、读取服务器发来的信息、解码
4.re.findall数据清洗

你可能感兴趣的:(python学习笔记)