requests+xpath+map爬取百度贴吧
# requests+xpath+map爬取百度贴吧
# 目标内容:跟帖用户名,跟帖内容,跟帖时间
# 分解:
# requests获取网页
# xpath提取内容
# map实现多线程爬虫
import requests
from requests.exceptions import RequestException
from lxml import etree
import json
from multiprocessing.dummy import Pool as ThreadPool def get_html(url):
try:
response = requests.get(url)
if response.status_code == 200:
return response.text
else:
return None
except RequestException:
return None def parse_html(html):
selector = etree.HTML(html)
data = selector.xpath('//div[@class="l_post j_l_post l_post_bright "]')
for each in data:
rs = each.xpath('@data-field')[0]
rs = json.loads(rs)
author = rs.get('author').get('user_name')
author_id = rs.get('content').get('post_id')
content = each.xpath('div/div/cc/div[@id="post_content_%s"]/text()'% author_id)[0].strip()
date = rs.get('content').get('date')
yield {
'author':author,
'content':content,
'date':date
} def save_to_txt(result):
print('正在存储:',result) with open('tieba.txt','a',encoding='utf-8') as f:
f.write('回帖作者:'+result['author']+'\n')
f.write('回帖内容:'+result['content']+'\n')
f.write('回帖时间:'+result['date']+'\n')
f.write('\n') def main(url):
html = get_html(url)
if html:
for result in parse_html(html):
save_to_txt(result) if __name__=='__main__': pool = ThreadPool(4)
urls=[]
base_url = 'http://tieba.baidu.com/p/3522395718?pn='
for page_num in range(1, 21):
url = base_url + str(page_num)
urls.append(url) pool.map(main,urls)
pool.close()
pool.join()
requests+xpath+map爬取百度贴吧的更多相关文章
- requests爬取百度音乐
		
使用requests爬取百度音乐,我想把当前热门歌手的音乐信息爬下来. 首先进行url分析,可以看到: 歌手网页: 薛之谦网页: 可以看到,似乎这些路劲的获取一切都很顺利,然后可以写代码: # -*- ...
 - 写一个python 爬虫爬取百度电影并存入mysql中
		
目标是利用python爬取百度搜索的电影 在类型 地区 年代各个标签下 电影的名字 评分 和图片连接 以及 电影连接 首先我们先在mysql中建表 create table liubo4( id in ...
 - 【学习笔记】Python 3.6模拟输入并爬取百度前10页密切相关链接
		
[学习笔记]Python 3.6模拟输入并爬取百度前10页密切相关链接 问题描述 通过模拟网页,实现百度搜索关键词,然后获得网页中链接的文本,与准备的文本进行比较,如果有相似之处则代表相关链接. me ...
 - selenium+chrome浏览器驱动-爬取百度图片
		
百度图片网页中中,当页面滚动到底部,页面会加载新的内容. 我们通过selenium和谷歌浏览器驱动,执行js,是浏览器不断加载页面,通过抓取页面的图片路径来下载图片. from selenium im ...
 - 爬虫系列(六) 用urllib和re爬取百度贴吧
		
这篇文章我们将使用 urllib 和 re 模块爬取百度贴吧,并使用三种文件格式存储数据,下面先贴上最终的效果图 1.网页分析 (1)准备工作 首先我们使用 Chrome 浏览器打开 百度贴吧,在输入 ...
 - 利用python的爬虫技术爬取百度贴吧的帖子
		
在爬取糗事百科的段子后,我又在知乎上找了一个爬取百度贴吧帖子的实例,为了巩固提升已掌握的爬虫知识,于是我打算自己也做一个. 实现目标:1,爬取楼主所发的帖子 2,显示所爬去的楼层以及帖子题目 3,将爬 ...
 - Python3实现QQ机器人自动爬取百度文库的搜索结果并发送给好友(主要是爬虫)
		
一.效果如下: 二.运行环境: win10系统:python3:PyCharm 三.QQ机器人用的是qqbot模块 用pip安装命令是: pip install qqbot (前提需要有request ...
 - Python Requests库网络爬取全代码
		
#爬取京东商品全代码 import requestsurl = "http://item.jd.com/2967929.html"try: r = requests.get(url ...
 - Python 爬虫实例(1)—— 爬取百度图片
		
爬取百度图片 在Python 2.7上运行 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author: loveNight import jso ...
 
随机推荐
- [模拟赛] T2 混合图
			
Description Hzwer神犇最近又征服了一个国家,然后接下来却也遇见了一个难题. Hzwer的国家有n个点,m条边,而作为国王,他十分喜欢游览自己的国家.他一般 会从任意一个点出发,随便找边 ...
 - Mycat 分片规则详解--自然月分片
			
实现方式:按照月份列分片,每个自然月一个分片 优点:使数据按照每月来进行分时存储 缺点:由于数据是连续的,所以该方案不能有效的利用资源 配置示例: <tableRule name="s ...
 - for..of与for..in
			
var arr=[1,2,3,5] undefined for(var m of arr) console.log(m)//1,2,3,5 for(var m in arr) console.log( ...
 - Dijkstra算法 Java实现
			
public class Dijkstra { private static int N = 1000; private static int[][] Graph = { { 0, 1, 5, N, ...
 - java之简单工厂模式详解
			
设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...
 - k8s实战为aspnetcore.webapi微服务注入配置信息 - kubernetes
			
1.浅析k8s配置信息 Secret 以密文的形式存储数据,可以用来保存一些敏感信息,例如:OAuth tokens.私钥.密码.数据库连接.事件总线连接等. ConfigMap 以明文的形式存储数据 ...
 - java 单向链表实现
			
1 class Node{//Node类 2 private String data; 3 private Node next; 4 public Node(String data){ 5 this. ...
 - python socket编程制作后门木马(原创)
			
不知道为啥,懒得解释怎么写出来的,直接上代码,爱看不看 Client: 简单连接服务器 #!/usr/bin/python #coding:utf-8 import socket import sy ...
 - JavaScript(第二十一天)【DOM元素尺寸和位置】
			
学习要点: 1.获取元素CSS大小 2.获取元素实际大小 3.获取元素周边大小 本章,我们主要讨论一下页面中的某一个元素它的各种大小和各种位置的计算方式,以便更好的理解. 一.获取元素CSS大小 ...
 - [W班]第二次结对作业成绩评价
			
作业地址: https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/1016 作业要求: 1.代码具有规范性. ...