python-爬取糗事百科热图
此次运用requests和beautifulSoup爬取糗事百科热图,常用的网络库有:urllib,urllib3,requests,选取其中之一就行了;HTML/XML解析器有:lxml,BeautifulSoup,html5lib,selenium,re等。
如果经常爬虫,觉得可以固定选择一种网络库和页面解析器,否则太多了不容易记住,主要思路就是访问页面(网络库)--分析页面元素(可通过浏览区F12查看)--提取需要的数据(页面解析器)。
在爬取的过程中发现,最好headers信息填的全一些,否则会报404错。示例代码:
# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import requests
import re
import os def parseHtml(allPageUrls,headers):
imgUrls = []
for i in allPageUrls:
html = requests.get(i, headers=headers).text
soup = BeautifulSoup(html, 'lxml').find_all('img', class_="illustration")
for url in soup:
#imgUrls.append('http:' + re.findall('src="(\S+)"', str(url))[0]) #也可用正则查找
imgUrls.append('http:' + url['src'])
return imgUrls def downloadImages(urls,path):
global count
if not os.path.exists(path):
print("Download path error!")
pass
else:
path = path.rstrip('/')
for i in urls:
count += 1
img = requests.get(i).content
with open(path + '//{0}.jpg'.format(count),'wb') as f:
f.write(img) def getAllPageUrls(baseUrl,headers):
allPageUrls = []
allPageUrls.append(baseUrl)
html = requests.get(baseUrl, headers=headers).text
pageNum = BeautifulSoup(html,'lxml').find_all('span',class_='page-numbers')[-1].text.strip()
for num in range(int(pageNum)):
if num >= 2:
allPageUrls.append(baseUrl + 'page/{0}/'.format(num))
return allPageUrls def main():
baseUrl = "https://www.qiushibaike.com/imgrank/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:67.0) Gecko/20100101 Firefox/67.0",
# "Host":"static.qiushibaike.com",
"Accept": "text/css,*/*;q=0.1",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
"Connection": "keep-alive",
"Cookie": 'Hm_lvt_2670efbdd59c7e3ed3749b458cafaa37=1564111558; Hm_lpvt_2670efbdd59c7e3ed3749b458cafaa37=1564111562; BAIDU_SSP_lcr=https://www.baidu.com/link?url=jWhGNGV5ALzyB_BRJKkXdeb60lmYQ3_Lewk3NHsLe_C9fvNwKDdTPwZDtD2GrY15&wd=&eqid=b4f829d300000e94000000045d3a72c3; _qqq_uuid_="2|1:0|10:1564111558|10:_qqq_uuid_|56:OWQxZTVlNjY4MWY2MjVmOTdjODkwMDE3MTEwZTQ0ZTE2ZGU4NTA1NA==|971036a31548dd5a201f29c949b56990b4895dee0e489693b7b9631f363ca452"; _ga=GA1.2.126854589.1564111558; _gid=GA1.2.839365496.1564111558; _gat=1',
"TE": "Trailers"
}
allPageUrls = getAllPageUrls(baseUrl, headers) #获取所有页面的访问地址
allImageUrls = parseHtml(allPageUrls, headers) #获取所有页面中图片地址
downloadImages(allImageUrls,'e://qiushibaike') #下载图片 if __name__ == '__main__':
count = 0
main()
运行结果:

python-爬取糗事百科热图的更多相关文章
- python爬取糗事百科段子
初步爬取糗事百科第一页段子(发布人,发布内容,好笑数和评论数) #-*-coding:utf--*- import urllib import urllib2 import re page = url ...
- Python爬取糗事百科
import urllib import urllib.request from bs4 import BeautifulSoup """ 1.抓取糗事百科所有纯 ...
- python 爬取糗事百科 gui小程序
前言:有时候无聊看一些搞笑的段子,糗事百科还是个不错的网站,所以就想用Python来玩一下.也比较简单,就写出来分享一下.嘿嘿 环境:Python 2.7 + win7 现在开始,打开糗事百科网站,先 ...
- Python爬取糗事百科示例代码
参考链接:http://python.jobbole.com/81351/#comment-93968 主要参考自伯乐在线的内容,但是该链接博客下的源码部分的正则表达式部分应该是有问题,试了好几次,没 ...
- Python爬虫实战一之爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...
- 8.Python爬虫实战一之爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...
- 转 Python爬虫实战一之爬取糗事百科段子
静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...
- python网络爬虫--简单爬取糗事百科
刚开始学习python爬虫,写了一个简单python程序爬取糗事百科. 具体步骤是这样的:首先查看糗事百科的url:http://www.qiushibaike.com/8hr/page/2/?s=4 ...
- python学习(十六)写爬虫爬取糗事百科段子
原文链接:爬取糗事百科段子 利用前面学到的文件.正则表达式.urllib的知识,综合运用,爬取糗事百科的段子先用urllib库获取糗事百科热帖第一页的数据.并打开文件进行保存,正好可以熟悉一下之前学过 ...
随机推荐
- Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器
[文章作者:张宴 本文版本:v6.3 最后修改:2010.07.26 转载请注明原文链接:http://blog.zyan.cc/nginx_php_v6/] 前言:本文是我撰写的关于搭建“Nginx ...
- puppet集群
实验目的: 由于现有的环境中,puppetmaster是单节点,客户端更新时出现了更新失败和时间较长等现象.考虑将puppetmaster做成集群的模式,解决大量客户端更新延时和单节点故 ...
- 软件测试课程--安装QTP后java环境变量冲突
很多学习性能测试的朋友们都会有这样的问题,安装QuickTest Professional11之后,类似于eclipse.pycharm打开弹出报错窗口,命令行(CMD)也无法正常显示javac.ja ...
- State Processor API:如何读取,写入和修改 Flink 应用程序的状态
过去无论您是在生产中使用,还是调研Apache Flink,估计您总是会问这样一个问题:我该如何访问和更新Flink保存点(savepoint)中保存的state?不用再询问了,Apache Flin ...
- k8s-in-aciton-3
镜像构建过程 构建过程不是由Docker客户端进行的,而是将整个目录的文件上传到Docker守护进程并在那里进行的.Docker客户端和守护进程不要求在同一 台机器上.如果你在一台非Linux操作系统 ...
- DOM修改
㈠DOM标准 核心DOM: HTML DOM ...
- C# 2.0
序言 泛型 为什么需要泛型? 分部类型 分部类和方法 partial 匿名方法 使用Delegate的时候很多时候没必要使用一个普通的方法,因为这个方法只有这个Delegate会用,并且只用一次,这时 ...
- “不是一个有效的Win32应用程序”
造冰箱的大熊猫@cnblogs 2018/10/23 今天在Windows计算机上安装一个应用程序时遇到“不是一个有效的Win32应用程序”错误.原以为是应用程序与操作系统版本兼容问题,或者是应用程序 ...
- Express + Mongoose 极简入门
今天尝试使用express + mongoose,构建了一个简单的Hello world,实现以下功能: 定义mongodb使用的Schema,一个User 访问/输出Hello world 访问/i ...
- jar 在windows 启动服务,卸载服务,停止端口
参考:https://www.cnblogs.com/zhuchunlei/p/9469569.html 1,启动服务 install.bat @echo off SET JAVA_HOME=&qu ...