美文网首页
python抓取网页

python抓取网页

作者: 清风沐沐 | 来源:发表于2017-06-11 16:39 被阅读67次

python 使用requests第三方库抓取网页HTML代码,并使用正则进行匹配检索代码

以简书首页为例

如果未检索成功 请copy加载的HTML代码,然后检验正则匹配的是否正确,网页标签元素可能改变,导致正则匹配不正确

#!/usr/bin/python
# coding: utf-8

import os, sys
import requests
import re

# page = 1
# url = 'http://www.qiushibaike.com/hot/page/' + str(page)
# user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
# headers = { 'User-Agent' : user_agent }

# 嗅事百科
def getHTMLHeader(urlString,headers):
    try:
        r = requests.get(urlString,headers = headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except r.URLError, e:
        if hasattr(e,"code"):
            print e.code
        if hasattr(e,"reason"):
            print e.reason

def getHTML(urlString):
    try:
        r = requests.get(urlString)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except r.URLError, e:
        if hasattr(e, "code"):
            print e.code
        if hasattr(e, "reason"):
            print e.reason


#正则提取数据  爬取简书首页 文章标题,链接,阅读量,评论量为例
def regJianshuHtml(url):
    if url.strip() == '':
        html = getHTML("http://www.jianshu.com")
    else:
        html = getHTML(url)
    reg = r'<a class="title" target="_blank" href="(.*?)">(.*?)</a>'
    hotre = re.compile(reg)
    artlist = re.findall(hotre,html)

    for article in artlist:
        for com in article:
            if com.startswith("/p/"):
                print "http://www.jianshu.com" + com
            else:
                print com

if __name__ == '__main__':
    # url = 'https://www.pmcaff.com/'
    # print(getHtmlText(url))

    # html = getHTMLHeader(url,headers)
    # print html

    regJianshuHtml("")

结果

http://www.jianshu.com/p/2622723e95b2
薛之谦高磊鑫:一别两宽,各生欢喜,你好,再见。
http://www.jianshu.com/p/1a5d3310b672
古巴女人迷死多少男人女人和我.....古巴裸游记2
http://www.jianshu.com/p/3298cc246015
中英双语:女性和公司(1)前言
http://www.jianshu.com/p/59a0e9694498
你只是表面上很努力,所以依然过得很煎熬
http://www.jianshu.com/p/bc2282da3b33
【原创育儿故事大赛】小恐龙给姥爷泡的茶
http://www.jianshu.com/p/72d8ce040ca7
不是你幸福少,而是你丧失了获得幸福的能力
http://www.jianshu.com/p/967cfeab62de
你为什么开始谈恋爱?
http://www.jianshu.com/p/cbc0566766d1
别再对我好了,我会当真的
http://www.jianshu.com/p/3d27a8603948
那些年我们追过的梦,还在吗?
http://www.jianshu.com/p/f15e454ac4c5
写在大三末尾:10条不怎么重要的大学建议
http://www.jianshu.com/p/86b10f6ea7d9
《简书·大学生活专题5月刊》|我超级自律,就是为了和别人不一样
http://www.jianshu.com/p/91347494f045
当写作无法跟上野心时,大学老师让我静下心努力
http://www.jianshu.com/p/d8e696fef7d9
如何打造自己的核心竞争力
http://www.jianshu.com/p/0858c9d5ad10
99%有钱人不愿告诉您的赚钱秘诀
http://www.jianshu.com/p/5e0905397803
看懂可口可乐,就能学会“定位”
http://www.jianshu.com/p/12b01f16e929
自律不一定会带来自由,但会带来一个更好的自己
http://www.jianshu.com/p/9c70cad93f1b
高考以后,你的人生才刚刚开始
http://www.jianshu.com/p/4688ba26e22a
情景剧|失恋女的胶原蛋白补充之旅
http://www.jianshu.com/p/7f4427d0ebdd
职场新人:有哪些靠谱的工作基本功
http://www.jianshu.com/p/d01ce7c931e5
夜深了,我来哄你的孩子睡觉

总结:

对HTML网页结构要清晰。

  • 正则表达式要熟悉,是提取数据的关键。
  • 使用BeautifulSoup会简单很多,里面也会用到正则。

相关文章

网友评论

      本文标题:python抓取网页

      本文链接:https://www.haomeiwen.com/subject/jhmhqxtx.html