标签:读取内容 例子 删除 模块 处理 简单例子 网络请求 无法 写法
#指定爬取的url (以搜狗为例)
url = "https://www.sogou.com"
# 发起请求get方法返回值为响应对象
response = requests.get(url=url)
#获取响应数据,由于是对象,所以你需要展示内容有text,json
page_text = response.text
#持久化存储
with open("./zhou.html","w") as f:
f.write(page_text) #这里获取的是html代码,所以存储要是html后缀文件,要不然无法读取内容的
实现一个简易网页采集器
keyWord = input(‘enter a key word:‘)
#携带了请求参数的url.如果想要爬取不同的关键字对应的页面,我们徐娅将url携带的参数进行动态化
params ={"query":keyword }
#其实至于携带的参数不是咱们决定的,你得实验看看搜索的时候,搜狗网站的url的变化,由于尝试过了,搜索之后网址会带这/web?query = "zhou" 所以按照他的url发起请求
所以后续写法:
url = ‘https://www.sogou.com/web‘
#params参数(字典):保存请求时url携带的参数
response = requests.get(url=url,params=params)
#此时redponse可以查看到是乱码形式。你只需要修改编码即可持久化储存
#修改响应数据的编码格式
#encoding返回的是响应数据的原始的编码格式,如果给其赋值则表示修改了响应数据的编码格式
response.encoding = ‘utf-8‘ #如果还是乱码可以尝试gbk gbk2312 等编码
page_text = response.text
fileName = keyWord+‘.html‘
#别忘了存入的时候用utf-8编码
with open(fileName,‘w‘,encoding=‘utf-8‘) as fp:
fp.write(page_text)
print(fileName,‘爬取完毕!!!‘)
处理了乱码。但是页面显示【异常访问】。导致请求失败
异常的访问请求
网站的后台是如何知道请求是不是通过浏览器发起的呢?
是通过判定请求的请求头中的user-agent判定的
反扒机制之一:UA
url = ‘https://www.sogou.com/web‘
params={"query":"zhou"}
#带上伪装请求载体。伪装成浏览器的身份
headers ={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"}
response = requests.get(url = url,params=params,headers=headers)
response.encoding="utf-8"
page_text = response.text
with open("homework(3)/zhou.html","w",encoding = "utf-8") as f:
f.write(page_text)
标签:读取内容 例子 删除 模块 处理 简单例子 网络请求 无法 写法
原文地址:https://www.cnblogs.com/zzsy/p/12687213.html