注:转载请注明出处
- 准备一个安装好python2.7以上的环境。
- 编译软件准备PyCharm 注:以上环境是必备的。
我们就以爬取糗事百科的文字段子和用户名称为例:
- 得到目标官网的地址:https://www.qiushibaike.com/8hr/page/1/ 由他们网站地址我们可以得出page是页的属性1是当前我在第几页,要注意一下这个属性因为他们是我们爬取页面的重要条件属性。
- 用浏览器访问(谷歌或其他IE除外)目标网站,按F12选择network,找到目标页面1/并点击
- 点击Headers得到我们本机的真实request信息,例如我们需要用到User-Agent属性我们就把它的键值对都复制一下准备使用
- 编写代码前准备:去目标网址访问源码:得到我们想要爬取的数据在他们的那么标签(盒子)里如图例:
5.得到以上了我们的准备工作也就算了完成了,不啰嗦了直接上代码
# -*- coding: UTF-8 -*-
import json
import urllib
import urllib2
'''导包'''
from bs4 import BeautifulSoup
import re
'''初始化访问页码'''
page = 1
'''规定要爬多少页的数据'''
while page<=2:
'''需要爬取的地址
'''
url = 'https://www.qiushibaike.com/8hr/page/' + str(page)
'''设置用户信息,这个可以到目标网站选取我们真正的用户信息,F12,找到network再找到文件里的第一个,查看
'''
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
try:
'''创建request请求对象'''
request = urllib2.Request(url,headers=headers)
'''开始得到这个页面'''
source_code = urllib2.urlopen(request).read()
'''把这个页面得到页面转换为文本'''
plain_text=str(source_code)
'''对可能碰到的异常进行判断抛出'''
except urllib2.URLError, e:
if hasattr(e,"code"):
print e.code
if hasattr(e,"reason"):
print e.reason
'''利用工具来拆分页面文本得到想要的值'''
soup=BeautifulSoup(plain_text,'html.parser')
'''选取目标在div标签class为content的内容'''
list_scpan=soup.find_all('div',{'class':'content'})
'''选取目标在h2标签的内容'''
list_H2=soup.find_all('h2')
i=0
'''循环打印得到的值
每页有len(list_H2)条
'''
while i<len(list_H2):
print i+1,'.'+list_H2[i].get_text().strip()
print list_scpan[i].get_text().strip()
i+=1
page+=1
运行结果:
看完代码就应该知道准备工作多重要了吧。。。
如果有问题可以在下方评论,讨论