python 爬虫 定向爬取技术

本代码用来爬取“糗事百科”中的 用户名 及其 段子
谨作为爬虫入门的一个例子
欢迎各位同学批评及评论

# -*- 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)







猜你喜欢

转载自blog.csdn.net/zjy122377/article/details/83153819