本代码用来爬取“糗事百科”中的 用户名 及其 段子
谨作为爬虫入门的一个例子
欢迎各位同学批评及评论
# -*- coding: utf-8 -*-
import re
import urllib.request
def getcontent(url):
#更改自己的User-Agent,让所爬取网页以为自己是浏览器访问
headers = ("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60")
#创建opener 属于隐藏真实访问的范畴 伪装自己的地址
opener = urllib.request.build_opener()
#通过更改User-Agent将自己伪装成浏览器
opener.addheaders = [headers]
#将opener安装为全局 安装opener
urllib.request.install_opener(opener)
#请求URL 打开网页获取网页信息
data=urllib.request.urlopen(url).read().decode('UTF-8')
#正则表达式 匹配用户名 因为观察网页的html得到用户名都在<h2>里面
userpat = '<h2>(.*?)</h2>'
#正则表达式 匹配段子内容,因为网页的html得到段子内容都在class类 content里面
contentpat = '<div class="content">(.*?)</div>'
#re.S 表示“.”(不包含外侧双引号,下同)的作用扩展到整个字符串
userlist = re.compile(userpat,re.S).findall(data)
contentlist = re.compile(contentpat, re.S).findall(data)
#for循环打印 用户名 和 段子内容
for x in range(0,len(contentlist)):
#replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串) 如果指定第三个参数max,则替换不超过 max 次。 语法:str.replace(old, new,[max])
a = userlist[x].replace('\n','')
b = contentlist[x].replace('\n', '')
dic = dict(user=a,content=b)
print(dic)
#url = 'https://www.qiushibaike.com/8hr/page/1/'
#实现翻页操作
for i in range(1,14):
url = "https://www.qiushibaike.com/8hr/page/"+str(i)+"/"
getcontent(url)