快捷搜索:
来自 计算机编程 2019-10-13 13:54 的文章
当前位置: 67677新澳门手机版 > 计算机编程 > 正文

爬虫实战

Python 爬虫实战(一):使用 requests 和 BeautifulSoup,大家利用了 requests 做网络央浼,获得网页数据再用 BeautifulSoup 剖判,就在近些日子,requests 作者 kennethreitz 出了一个新库 requests-html,Pythonic HTML Parsing for Humans™,它能够用来分析 HTML 文书档案的。requests-html 是依靠现成的框架 PyQuery、Requests、lxml 等库进行了壹回封装,越发便于开拓者调用。

Python 基础

自己事先写的《Python 3 极简教程.pdf》,符合有一点编制程序基础的一点也不慢入门,通过该连串小说学习,能够独立达成接口的编辑撰写,写写小东西没难题。

安装

Mac:

pip3 install requests-html

Windows:

pip install requests-html

requests

requests,Python HTTP 要求库,也正是 Android 的 Retrofit,它的效能蕴含Keep-Alive 和连接池、Cookie 持久化、内容自动解压、HTTP 代理、SSL 认证、连接超时、Session 等相当多表征,同期相配 Python2 和 Python3,GitHub:https://github.com/requests/requests 。

实例

图片 1

代码撸多了,让大家看会妹纸,爬的网址本身选的是 ,张开网址,观看到那是个列表,图片是缩略图,要想保留图片到本地,当然必要高清大图,因而得进去列表详细的情况,进一步剖判,完整代码如下:

from requests_html import HTMLSession
import requests
import time

session = HTMLSession()


# 解析图片列表
def get_girl_list():
    # 返回一个 response 对象
    response = session.get('http://www.win4000.com/zt/xinggan.html')  # 单位秒数

    content = response.html.find('div.Left_bar', first=True)

    li_list = content.find('li')

    for li in li_list:
        url = li.find('a', first=True).attrs['href']
        get_girl_detail(url)


# 解析图片详细
def get_girl_detail(url):
    # 返回一个 response 对象
    response = session.get(url)  # 单位秒数
    content = response.html.find('div.scroll-img-cont', first=True)
    li_list = content.find('li')
    for li in li_list:
        img_url = li.find('img', first=True).attrs['data-original']
        img_url = img_url[0:img_url.find('_')]   '.jpg'
        print(img_url   '.jpg')
        save_image(img_url)


# 保持大图
def save_image(img_url):
    img_response = requests.get(img_url)
    t = int(round(time.time() * 1000))  # 毫秒级时间戳
    f = open('/Users/wuxiaolong/Desktop/Girl/%d.jpg' % t, 'ab')  # 存储图片,多媒体文件需要参数b(二进制文件)
    f.write(img_response.content)  # 多媒体存储content
    f.close()


if __name__ == '__main__':
    get_girl_list()

代码就那样多,是或不是感到很简短啊。

说明:

1、requests-html 与 BeautifulSoup 区别,能够直接通过标签来 find,常常如下:
标签
标签.someClass
标签#someID
标签[target=_blank]
参数 first 是 True,表示只回去 Element 找到的首先个,更加的多使用: ;

2、这里保留本地路径 /Users/wuxiaolong/Desktop/Girl/自己写死了,须要读者改成温馨的,假设直白是文本名,保存路径将是类别目录下。

安装

Mac:

pip3 install requests

Windows:

pip install requests

遗留难题

示范所爬网站是分页的,未有做,能够定时循环来爬妹纸哦,有野趣的读者自身玩下。

发送央求

HTTP 须要方法有 get、post、put、delete。

import requests

# get 请求
response = requests.get('http://127.0.0.1:1024/developer/api/v1.0/all')

# post 请求
response = requests.post('http://127.0.0.1:1024/developer/api/v1.0/insert')

# put 请求
response = requests.put('http://127.0.0.1:1024/developer/api/v1.0/update')

# delete 请求
response = requests.delete('http://127.0.0.1:1024/developer/api/v1.0/delete')

呼吁重回 Response 对象,Response 对象是对 HTTP 契约中服务端重返给浏览器的响应数据的包裹,响应的中的重要要素富含:状态码、原因短语、响应首部、响应 U卡宴L、响应 encoding、响应体等等。

# 状态码
print(response.status_code)

# 响应 URL
print(response.url)

# 响应短语
print(response.reason)

# 响应内容
print(response.json())

参考

requests-html

后天用了须臾间Requests-HTML库(Python爬虫)

定制央浼头

呼吁增加 HTTP 尾部 Headers,只要传递三个 dict 给 headers 关键字参数就足以了。

header = {'Application-Id': '19869a66c6',
          'Content-Type': 'application/json'
          }
response = requests.get('http://127.0.0.1:1024/developer/api/v1.0/all/', headers=header)

公众号

自己的万众号:吴小龙同学,招待调换~
图片 2

营造查询参数

想为 U大切诺基L 的查询字符串(query string)传递某种数据,例如:http://127.0.0.1:1024/developer/api/v1.0/all?key1=value1&key2=value2 ,Requests 允许你选取 params 关键字参数,以四个字符串字典来提供那个参数。

payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.get("http://127.0.0.1:1024/developer/api/v1.0/all", params=payload)

还是能够将 list 作为值传入:

payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
response = requests.get("http://127.0.0.1:1024/developer/api/v1.0/all", params=payload)

# 响应 URL
print(response.url)# 打印:http://127.0.0.1:1024/developer/api/v1.0/all?key1=value1&key2=value2&key2=value3

post 央求数据

倘诺服务器必要发送的数目是表单数据,则可以钦命关键字参数 data。

payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post("http://127.0.0.1:1024/developer/api/v1.0/insert", data=payload)

万一要求传递 json 格式字符串参数,则能够动用 json 关键字参数,参数的值都得以字典的花样传过去。

obj = {
    "article_title": "小公务员之死2"
}
# response = requests.post('http://127.0.0.1:1024/developer/api/v1.0/insert', json=obj)

一呼百应内容

Requests 会自动解码来自服务器的内容。大大多 unicode 字符集都能被无缝地解码。诉求发出后,Requests 会基于 HTTP 底部对响应的编码作出有依赖的推测。

# 响应内容
# 返回是 是 str 类型内容
# print(response.text())
# 返回是 JSON 响应内容
print(response.json())
# 返回是二进制响应内容
# print(response.content())
# 原始响应内容,初始请求中设置了 stream=True
# response = requests.get('http://127.0.0.1:1024/developer/api/v1.0/all', stream=True)
# print(response.raw())

超时

若是未有显式钦点了 timeout 值,requests 是不会自行实行过期管理的。假若跨服未有响应的景色时,整个应用程序向来处在阻塞状态而无法管理其余需要。

response = requests.get('http://127.0.0.1:1024/developer/api/v1.0/all', timeout=5)  # 单位秒数

代理设置

借使再三拜访二个网站,很轻便被劳动器屏蔽掉,requests 完美扶持代理。

# 代理
proxies = {
    'http': 'http://127.0.0.1:1024',
    'https': 'http://127.0.0.1:4000',
}
response = requests.get('http://127.0.0.1:1024/developer/api/v1.0/all', proxies=proxies)

BeautifulSoup

BeautifulSoup,Python Html 解析库,相当于 Java 的 jsoup。

安装

BeautifulSoup 3 最近早已甘休开辟,直接行使BeautifulSoup 4。

Mac:

pip3 install beautifulsoup4

Windows:

pip install beautifulsoup4

安装深入分析器

自己用的是 html5lib,纯 Python 完毕的。

Mac:

pip3 install html5lib

Windows:

pip install html5lib

简轻巧单利用

BeautifulSoup 将复杂 HTML 文书档案转变来八个繁缛的树形结构,每个节点都以Python 对象。

本文由67677新澳门手机版发布于计算机编程,转载请注明出处:爬虫实战

关键词: