Requests简单爬虫-python简单爬虫

918次阅读
没有评论

Requests

Requests 继承了urllib的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保

持会话,支持

文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。

requests 的底层实现其实就是 urllib,Requests的文档非常完备,中文文档也相当不错。Requests能完全满足当前网络的需求,支持Python 2.6–3.5,而且能在PyPy下完美运行。

开源地址:https://github.com/kennethreitz/requests

中文文档 API:http://docs.python-requests.org/zh_CN/latest/index.html

安装Requests

$ pip install requests

Requests简单爬虫-python简单爬虫

安装好了之后现在就可以编写代码了。


需求1

使用get请求爬取百度贴吧Java类的前一百页数据保存到本地.

# get请求方式
requests.get(url, .headers)

1.先打开百度贴吧,找到对应网址以及分页的规律

Requests简单爬虫-python简单爬虫

# 网址域名/f?kw=关键字&ie=编码格式&pn=页码数量(行号)
https://tieba.baidu.com/f?kw=java&ie=utf-8&pn=0

1.然后F12=>NetWork=>查看网址=>Request Headers中的User-Agent,并且复制出来

Requests简单爬虫-python简单爬虫

代码如下:

import requests


# 获取贴吧1000页数据
class TiebaSpider(object):

   # 实例化
   def __init__(selftieba_name):
       self.tieba_name = tieba_name
       # 贴吧网址
       self.tieba_url = “https://tieba.baidu.com/f?kw=” + tieba_name+ “&ie=utf-8&pn={}”
       # User-Agent:模仿浏览器请求使用的
       self.headers = {
           “User-Agent”“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36”}

   # 构造url裂变
   def get_url_list(self):
       # 由于现实的pn第一页等于0,第二页等于50,也就是每一页数据就是多50,所以直接使用推导式循环100次然后将pn值为50,100,150,200
       return [self.tieba_url.format(i * 50for i in range(100)]

   # 发送请求,获取响应
   def parse_url(selfurl):
       response = requests.get(urlheaders=self.headers)
       # 获取html数据并且解码
       return response.content.decode()

   # 保存html地址
   def save_html(selfhtml_datapagenum):
       # 将文件写入硬盘
       file_path = “{}-第{}页.html”.format(self.tieba_namepagenum)
       with open(file_path“w”encoding=“utf-8”as f:
           f.write(html_data)

   def run(self):
       # 获取要爬虫的所有页面地址
       url_list = self.get_url_list()
       # 循环列表,模仿浏览器访问百度贴吧
       for url in url_list:
           # 发送请求
           html_data = self.parse_url(url)
           # 写入硬盘
           page_index = url_list.index(url+ 1
           self.save_html(html_datapage_index)
           print(“第{}页完成”.format(page_index))


if __name__ == “__main__”:
   tieba = TiebaSpider(“java”)
   tieba.run()

好啦,这就写完了,最简单的一个爬虫入门.

需求2

使用post请求爬取百度翻译来做一个自己翻译软件。由于网页版的百度翻译有一个sign: 456989.137772参数时动态的,而app版的没有,所以直接爬取app版的。

#post请求
requests.post(urldataheaders)

直接贴代码:

import requests

# 百度翻译
class FanyiSpider(object):

   def __init__(selfvalues):
       self.data = {
           “query”values,
           “from”“zh”,
           “to”“en”,
      }
       self.headers = {
           “user-agent”“Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1”
      }
       self.temp_url = “https://fanyi.baidu.com/basetrans”

   def post(self):
       response = requests.post(self.temp_urldata=self.data,headers=self.headers)
       return response.content.decode()

   def run(self):
       # 发送请求
       data_json = self.post()
       print(data_json)


if __name__ == “__main__”:
   value = input(“请输入要翻译的数据:”)
   fanyi = FanyiSpider(value)
   fanyi.run()

以上就是入门级的源码,比较简单,其实爬虫过多的困难都在与怎么找到请求的规律和网址。

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-11-01发表,共计2748字。
新手QQ群:570568346,欢迎进群讨论 Python51学习