博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
crawl wechat page
阅读量:6215 次
发布时间:2019-06-21

本文共 2385 字,大约阅读时间需要 7 分钟。

#!/usr/bin/python# coding: utf-8import refrom collections import Counterimport requestsimport timefrom bs4 import BeautifulSoupdef count_zero(text):    zero = dict(Counter(text)).get('0', 0)    if zero > 1:        return zero    else:        return Falsedef get_normal_title(text):    start_index = text[:3]    titles = re.split(pattern='\d\d\d', string=text, maxsplit=20, flags=1)    titles_rm_quesiton = [item.replace('?', ' ') for item in titles]    titles_rm_blank = [t for t in titles_rm_quesiton if t]    titles_normal = []    for index, i in enumerate(titles_rm_blank):        if 1 == len(str(int(start_index))):            t = '00' + str(int(start_index) + index) + i        elif str(start_index).startswith('0'):            t = '0' + str(int(start_index) + index) + i        else:            t = str(int(start_index) + index) + i        titles_normal.append(t)    return titles_normaldef eliminate_question(title):    return str(title).replace('\xa0', '')def get_title_url(response):    title_url_dict = {}    soup = BeautifulSoup(response, 'html.parser')    tag_p = soup.find_all('p')    for each_p in tag_p:        urls = []        text = each_p.get_text()        pattern = re.compile('^\d{3}.*$')        if pattern.match(text):            zero_num = count_zero(text)            if zero_num:                titles = get_normal_title(text)                for each_a in each_p.find_all('a'):                    url = each_a.get('href')                    urls.append(url)                title_url_tuple = zip([eliminate_question(t) for t in titles], urls)                for i in title_url_tuple:                    title_url_dict.setdefault(i[0], i[1])            else:                text = eliminate_question(text)                url = each_p.find('a').get('href')                title_url_dict.setdefault(text, url)    return title_url_dictdef download_content(url, title):    response = requests.get(url=url).text    with open(title + '.html', 'w', encoding='utf-8') as f:        f.write(response)def main():    url_wechat_index = 'https://mp.weixin.qq.com/s/7o8QxGydMTUe4Q7Tz46Diw'    response = requests.get(url=url_wechat_index).text    title_url_dict = get_title_url(response)    for title, url in title_url_dict.items():        time.sleep(5)        download_content(url, title)if __name__ == "__main__":    main()

转载于:https://www.cnblogs.com/otfsenter/p/9548477.html

你可能感兴趣的文章
我的友情链接
查看>>
ToRPC:一个双向RPC的Python实现
查看>>
Vim脚本 - 竖线'|' 和反斜线'\'
查看>>
netty框架的学习笔记 + 一个netty实现websocket通信案例
查看>>
我的友情链接
查看>>
nginx在reload时候报错invalid PID number
查看>>
神经网络和深度学习-第二周神经网络基础-第二节:Logistic回归
查看>>
Myeclipse代码提示及如何设置自动提示
查看>>
setTimeOut(),和setInterVal()调用函数加不加括号!!!
查看>>
c/c++中保留两位有效数字
查看>>
urlparse获取url后面的参数
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>
VS2010远程调试C#程序
查看>>
notepad++正则表达式例子
查看>>
[MicroPython]TurniBit开发板DIY自动窗帘模拟系统
查看>>
由String类的Split方法所遇到的两个问题
查看>>
Python3.4 12306 2015年3月验证码识别
查看>>
从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)
查看>>
自制操作系统Antz day11——实现shell(下)命令响应
查看>>
windows查看端口占用
查看>>