欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python爬虫——提取抓取内容(3)经典语录网语录抓取

程序员文章站 2024-01-23 12:55:16
...

一.分析代码

对比两个链接
python爬虫——提取抓取内容(3)经典语录网语录抓取
python爬虫——提取抓取内容(3)经典语录网语录抓取
标题正则表达式:

r'<a href="(/a/jingdianmingyan/.*?/\d+\.html)" class="title">(.*?)</a>'

python爬虫——提取抓取内容(3)经典语录网语录抓取
python爬虫——提取抓取内容(3)经典语录网语录抓取
每个标题的内容正则表达式:

r'<div class="content">.*?<td>.*?</div>(.*?)</td>.*?</div>'

python爬虫——提取抓取内容(3)经典语录网语录抓取

二.代码展示

import urllib.request
import urllib.parse
import re
import os


def handle_request(url, page=None): # 设置默认值,可以二次使用(get_text函数)
    if page != None:
        url = url + str(page) + '.html'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36',
    }
    # print(url)
    request = urllib.request.Request(url, headers=headers)
    return request


def get_text(a_href):
    # 调用函数构建请求对象
    request = handle_request(a_href)
    # 发送请求,获取响应
    content = urllib.request.urlopen(request).read().decode()
    # 解析内容
    pattern = re.compile(r'<div class="content">.*?<td>.*?</div>(.*?)</td>.*?</div>', re.S)
    lt = pattern.findall(content)  # 返回一个列表
    # print(lt[0])
    text = lt[0]
    # 写个正则,将内容里面所有的图片标签全部清空
    pat = re.compile(r'<img .*?>')
    text = pat.sub('', text)
    return text


def parse_content(content):
    pattern=re.compile(r'<a href="(/a/jingdianmingyan/.*?/\d+\.html)" class="title">(.*?)</a>')
    """返回的是一个列表,列表中的元素都是元组,元组中第一个元素
       就是正则中第一个小括号匹配到的内容,第二个元素就是正则中第二个小括号匹配到的内容"""
    lt = pattern.findall(content)
    # print(lt)
    # 遍历列表
    for href_title in lt:
        # 获取内容链接
        a_href = 'https://www.jdylw.cn'+href_title[0]
        # 获取标题
        title = href_title[1]
        # print(title)
        # 向a_href发送请求,获取响应内容
        text = get_text(a_href)
        # 写入到html中
        string = '<h1>%s</h1>%s' % (title, text)
        with open('mingyan.html', 'a',encoding="utf8") as fp:
            fp.write(string)




def main():
    url = 'https://www.jdylw.cn/a/jingdianmingyan/list_15_'
    start_page = int(input("请输入起始页码:"))
    end_page = int(input("请输入结束页码:"))
    for page in range(start_page,end_page+1):
        # 根据url和page生成指定的request
        request=handle_request(url,page)
        # 发送请求
        content = urllib.request.urlopen(request).read().decode()
        # 解析内容
        parse_content(content)



if __name__ == "__main__":
    main()

python爬虫——提取抓取内容(3)经典语录网语录抓取
python爬虫——提取抓取内容(3)经典语录网语录抓取
用浏览器查看
python爬虫——提取抓取内容(3)经典语录网语录抓取

相关标签: python爬虫

上一篇: Java&Spring过时的经典语录

下一篇: