正则爬取糗事百科,Python转页爬取某铝业网站上

作者: 网络编程  发布:2019-10-19

天行健,君子以自勉;地势坤,君子以无欲则刚!

推行指标:获取囧事百科网页上的段落

思路

金沙澳门官网 ,好了废话十分的少说,正式步入正题,近些日子应朋友的伸手,爬取了某铝业网址上的多寡。刚起初吧,依然挺不乐意的(重纵然自个儿未有完全的爬取过网络的数据哎,正是不自信),不过在兄弟伙的前边无法丢脸卅,硬领头皮都要上,于是乎答应了他,好啊~~~~

1)分析种种页面间的网站规律,构造网站变量

对应的网站:https://www.qiushibaike.com/

接下去,对网站举行剖析,此时笔者只得到了段子的首先个页面,往下拖动,能够观看段子还也有许多页,如图所示

金沙澳门官网 1

尴尬事百科.png

那即是说,怎么着技能自动爬取第一页以外的其余页面吗?

单击“2”、“3”...."下一页",观察网站的扭转。
鼠标点击“2”之后,开掘网站由 https://www.qiushibaike.com/ 变为 https://www.qiushibaike.com/8hr/page/2/
持续点击“3”,开采网站产生了 https://www.qiushibaike.com/8hr/page/3/
认为还不能够搜查缉获规律的话能够持续往下点几页观望

能够开采,获取第几页是通过UOdysseyL地址识其余,即经过GET要求的

金沙澳门官网 2

由此GET诉求获取下一页.png

考查网站的变化,发掘有个字段 page,“/”之后的数字对应正是页数,由此估算 page 字段后边的数字代表的是收获第几页的段落内容,将网站中的数字3 改成11 实行认证,即网站变为https://www.qiushibaike.com/8hr/page/11/,观看页面结果,能够看来页面呈现的是第11页的段子内容

金沙澳门官网 3

手工业切换网站观看内容变化.png

因而能够想到利用 for 循环完成,每页段子内容读取完后,数字(页数)加1,即自行切换成下一页


2)营造自定义函数,用来贯彻爬取网页上的段落,包涵:客户别称、段子内容
  • 宪章浏览器访谈,观望网页源代码,将客商别名和段落内容的格式写成正则表明式
  • 用正则表明式提抽出顾客别名和段落内容(获取多少内容,即页数由本身调节)
  • 通过 for 循环分别遍历客户别称和段子内容

 大家的爬取目的:

3)通过 for 循环获取各页UMuranoL链接,每页分别调用二个函数

现实落成代码如下:

# -*- coding: utf-8 -*-
# __author__ = 'Carina'    

import re
import urllib.request


def getcontent(qsbkurl, page):
    # 模拟成浏览器
    headers = ("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0")
    opener = urllib.request.build_opener()
    opener.addheaders = [headers]
    # 将opener 设为全局变量
    urllib.request.install_opener(opener)
    data = urllib.request.urlopen(qsbkurl).read().decode('utf-8')
    # print(data)
    # 构建对应用户提取的正则表达式        
    userpat = '<h2>*(.*?)</h2>'
    # 构建段子内容提取的正则表达式
    contentpat = '<div class="content">(.*?)</div>'
    # 寻找出所有用户
    userlist = re.compile(userpat, re.S).findall(data)    # re.S表示使.匹配包括换行在内的所有字符
    # print(userlist)
    # 寻找出所有的内容
    contestlist = re.compile(contentpat, re.S).findall(data)
    # print(contestlist)
    x = 1
    # 通过for循环遍历段子内容并将内容分别付给对应的变量
    for content in contestlist:
        content = content.replace("n", "")               # 替换换行符
        content = content.replace("", "")      #可根据需求增减替换字符
        content = content.replace("", "")
        # 用字符串作为变量名,先将对应字符赋给一个变量
        neilong = "content"   str(x)
        # 通过exec()函数实现用字符串作为变量名并赋值
        exec(neilong   '=content')
        x  = 1
    y = 1
    # 通过for循环遍历用户,并输出该用户对应的内容
    for user in userlist:
        user = user.replace("n","")
        neilong = "content"   str(y)
        print("第"   str(page)   "页的用户是:"   user)
        print("段子内容是:")
        exec("print("  neilong  ")")
        print("n")
        y  = 1

# 分别获取各页的段子,通过for循环可以获取多页
for i in range(1, 4):      # 爬取页数自己设定
    qsbkurl = "https://www.qiushibaike.com/8hr/page/"   str(i)
    getcontent(qsbkurl, i)

怎么固定顾客别称和段落内容?

网页鼠标右键---查看源代码,接着可借助页面上的小名和内容去找寻(Ctrl F),方便快读定位,因此可得出客商小名从<h2>...</h2>标签去取,段子内容从<div class="content">.....</div>取,加以整理得出正则表明式

金沙澳门官网 4

固化成分.png

结缘网页和输出结果,看到内容是同样的,数据爬取成功

金沙澳门官网 5

先是页结果.png

金沙澳门官网 6

其三页结果.png

总结

经过爬虫举行自动化爬取,能够省下众多日子,例如要透过复制粘贴的点子,几百页的数码花费的肥力就非凡大了,别的也可能有一部分网址是不允许复制粘贴的,碰着时会很脑瓜疼,只好信任任何艺术
应用爬虫的格局,也足以将数据收取来存到数据库方便使用

若囧事百科的网页代码结构发生了扭转,那么代码中的U途睿欧L网站和正则表明式都要开展相应的调度,不然不可能爬取。

写给自个儿的话

学习爬虫,要学会写爬虫的这一套方法并灵活运用
(基本思路一致,具体细节具体剖析)

1、总共63页,每页有十几条的链接

金沙澳门官网 7

2、爬取连接里面包车型大巴数量(主要有产品名称、规格、公约、华北市情、华西市道、西北市集、中原市集、产品报价时间)

金沙澳门官网 8

3、爬取的多寡存为CSV格式


 一、网页源代码深入分析:

1、深入分析网址每页的网站

先是页的网站:

其次页的网站:

其三页的网站:

梯次类推

笔者们能够窥见第63页的网站是:

2、深入分析每页网页的源代码

通过查阅第一页的网页的源代码,能够窥见,第一页上的每一天的产品报价的链接。

本文由金沙澳门官网发布于网络编程,转载请注明出处:正则爬取糗事百科,Python转页爬取某铝业网站上

关键词: 金沙澳门官网

上一篇:python基础一
下一篇:没有了