requests-html 是基于现有的框架 PyQuery、Requests、lxml、beautifulsoup4等库进行了二次封装,作者将Requests设计的简单强大的优点带到了该项目中。
#安装:
> pip install requests-html
使用GET请求 https://python.org 网站。
先来看看requests的基本使用。
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('https://python.org/')
# 获取页面上的所有链接。
all_links = r.html.links
print(all_links)
# 获取页面上的所有链接,以绝对路径的方式。
all_absolute_links = r.html.absolute_links
print(all_absolute_links)
~~~~~~~~小试牛刀~~~~~~~~
作为一个IT技术人员,是不是要时时关心一下科技圈的新闻,上博客园新闻频道,抓取最新的推荐新闻。
from requests_html import HTMLSession
session = HTMLSession()
r = session.get("https://news.cnblogs.com/n/recommend")
# 通过CSS找到新闻标签
news = r.html.find('h2.news_entry > a')
for new in news:
print(new.text) # 获得新闻标题
print(new.absolute_links) # 获得新闻链接
接下来我们到网站上下载壁纸,以美桌网(www.win4000.com)为例。
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('E:/code/girl/%d.jpg' % t, 'ab') # 存储图片,多媒体文件需要参数b(二进制文件)
f.write(img_response.content) # 多媒体存储content
f.close()
if __name__ == '__main__':
get_girl_list()