requests+xpath+map爬取百度贴吧

 1 # requests+xpath+map爬取百度贴吧
 2 # 目标内容:跟帖用户名,跟帖内容,跟帖时间
 3 # 分解:
 4 # requests获取网页
 5 # xpath提取内容
 6 # map实现多线程爬虫
 7 import requests
 8 from requests.exceptions import RequestException
 9 from lxml import etree
10 import json
11 from multiprocessing.dummy import Pool as ThreadPool
12
13 def get_html(url):
14     try:
15         response = requests.get(url)
16         if response.status_code == 200:
17             return response.text
18         else:
19             return None
20     except RequestException:
21         return None
22
23 def parse_html(html):
24     selector = etree.HTML(html)
25     data = selector.xpath(‘//div[@class="l_post j_l_post l_post_bright  "]‘)
26     for each in data:
27         rs = each.xpath(‘@data-field‘)[0]
28         rs = json.loads(rs)
29         author = rs.get(‘author‘).get(‘user_name‘)
30         author_id = rs.get(‘content‘).get(‘post_id‘)
31         content = each.xpath(‘div/div/cc/div[@id="post_content_%s"]/text()‘% author_id)[0].strip()
32         date = rs.get(‘content‘).get(‘date‘)
33         yield {
34             ‘author‘:author,
35             ‘content‘:content,
36             ‘date‘:date
37         }
38
39 def save_to_txt(result):
40     print(‘正在存储:‘,result)
41
42     with open(‘tieba.txt‘,‘a‘,encoding=‘utf-8‘) as f:
43         f.write(‘回帖作者:‘+result[‘author‘]+‘\n‘)
44         f.write(‘回帖内容:‘+result[‘content‘]+‘\n‘)
45         f.write(‘回帖时间:‘+result[‘date‘]+‘\n‘)
46         f.write(‘\n‘)
47
48
49 def main(url):
50         html = get_html(url)
51         if html:
52             for result in parse_html(html):
53                 save_to_txt(result)
54
55 if __name__==‘__main__‘:
56
57     pool = ThreadPool(4)
58     urls=[]
59     base_url = ‘http://tieba.baidu.com/p/3522395718?pn=‘
60     for page_num in range(1, 21):
61         url = base_url + str(page_num)
62         urls.append(url)
63
64     pool.map(main,urls)
65     pool.close()
66     pool.join()
时间: 2024-09-30 05:36:57

requests+xpath+map爬取百度贴吧的相关文章

python爬取百度搜索图片

在之前通过爬取贴吧图片有了一点经验,先根据之前经验再次爬取百度搜索界面图片 废话不说,先上代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/7/22 10:44 # @Author : wqj # @Contact : [email protected] # @Site : # @File : test.py # @Software: PyCharm Community Edition import requests

python 爬取百度url

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Date : 2017-08-29 18:38:23 4 # @Author : EnderZhou ([email protected]) 5 # @Link : http://www.cnblogs.com/enderzhou/ 6 # @Version : $Id$ 7 8 import requests 9 import sys 10 from Queue import Queu

Python3实现QQ机器人自动爬取百度文库的搜索结果并发送给好友(主要是爬虫)

一.效果如下: 二.运行环境: win10系统:python3:PyCharm 三.QQ机器人用的是qqbot模块 用pip安装命令是: pip install qqbot (前提需要有requests库) 实现自己的机器人:网上好几种写法,很简单,不过有时候环境不同会出现错误,下面是亲测可以运行的: from qqbot import QQBotSlot as qqbotslot, RunBot @qqbotslot def onQQMessage(bot, contact, member,

python爬取百度翻译返回:{'error': 997, 'from': 'zh', 'to': 'en', 'query 问题

解决办法: 修改url为手机版的地址:http://fanyi.baidu.com/basetrans User-Agent也用手机版的 测试代码: # -*- coding: utf-8 -*- """ ------------------------------------------------- File Name: requestsGet Description : 爬取在线翻译数据s Author : 神秘藏宝室 date: 2018-04-17 --------

爬取百度热搜榜

1.打开网站:http://top.baidu.com/buzz?b=341&c=513&fr=topbuzz_b42 2.按Ctrl+u查看网页源代码 3.招到要爬取的数据 4. import requests from bs4 import BeautifulSoup import pandas as pd url = 'http://top.baidu.com/buzz?b=341&c=513&fr=topbuzz_b341_c513' headers = {'Use

爬取百度热搜榜前十

1.导入相应的库 2.找到要爬取的网站:http://top.baidu.com/buzz?b=341&c=513&fr=topbuzz_b341_c513 3.找到爬取的内容: 4.用for循环将需要的内容添加到空列表中,在使用DataFrame打印出热搜榜前十 import requests from bs4 import BeautifulSoup import bs4 import pandas as pd url = 'http://top.baidu.com/buzz?b=34

爬取百度实时热点前十排行榜

import requests#导入相应库from bs4 import BeautifulSoupimport pandas as pdurl = 'http://top.baidu.com/buzz?b=1&c=513&fr=topbuzz_b341_c513'#要爬取的网址headers = {'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/

[PHP] 网盘搜索引擎-采集爬取百度网盘分享文件实现网盘搜索(二)

前情提要:最近使用PHP实现了简单的网盘搜索程序,并且关联了微信公众平台,名字是网盘小说.用户可以通过公众号输入关键字,公众号会返回相应的网盘下载地址.就是这么一个简单的功能,类似很多的网盘搜索类网站,我这个采集和搜索程序都是PHP实现的,全文和分词搜索部分使用到了开源软件xunsearch. 上一篇([PHP] 网盘搜索引擎-采集爬取百度网盘分享文件实现网盘搜索)中我重点介绍了怎样去获取一大批的百度网盘用户,这一篇介绍怎样获得指定网盘用户的分享列表.同样的原理,也是找到百度获取分享列表的接口,

Python爬虫实战二之爬取百度贴吧帖子

大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不好使,八成是正则表达式那儿匹配不到了,请更改一下正则,当然最主要的还是帮助大家理解思路. 2016/12/2 本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件 1.URL格式的确定 首先,我们先观察一下百度贴吧的任意一个帖子. 比如:ht