爬虫
来源:互联网 发布:城田优 知乎 编辑:程序博客网 时间:2024/04/29 16:18
“巧妇难为无米之炊”,能获得自己想要的数据,才能做出想要的成果。
最近开始学习爬虫,目的:获取新浪微博关键用户发表的所有微博。
幸而有同学相助,给出很多建议。
一、python 模拟登录
使用cookie包
cookie指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)
详细代码:Python模拟新浪微博登录
极客视频讲解爬虫系列(使用了2种模拟登陆方法:1. cookie 2.列表法)
里面有讲到用Fidder获取cookies,而实际上,我们使用下面两个文档中讲到的方法就可以获取了。
相关文档1
相关文档2
a. 新浪微博,手机端比PC端的数据更干净,更容易获取~手机:weibo.cn (PC:weibo.com)
b. 安装requests包时,遇到问题:
pip install requests
,及在pycharm ->setting->Project里按“+”键出问题,
解决方法:
自行下载requests包,解压缩到D:\Python27\Lib\site-packages ,然后运行python setup.py install
c. from lxml import etree 失败,pip网站又登录不上去,于是从师弟那儿拷贝全部的包。解决方法:
先安装了一个VCForPython27.msi
再更改路径。
二. 翻页功能
需修改:backurl,action
三. etree.HTML编码出现问题
解决方案
四. XPath(另一种:正则表达式)
在使用etree.HTML后,需要用XPath对爬取到的内容进行解析。
又一次,选择极客学院
XPath 与多线程爬虫
4.1 定义
XPath : XML的路径语言,用来确定XML确定位置内容的语言。
or: 一门语言/在XML文档中查找信息/支持HTML/通过元素和属性进行导航
4.2 使用
将网页源代码转换成可以被XPath识别的码:
<span style="font-size:18px;">Selector = etree.HTML(网页源代码)</span>
提取感兴趣的
Selector.xpath(一段神奇的符号)
HTML结构:树状结构/逐层展开/逐层定位/寻找独立节点
可“右击-> 查看源代码”
4.4 具体使用
获取:
方法1. 手动分析: html->body->div->ul[@useful]->li
方法2. Chrome自动生成:
在代码上右击copy
“//”:如果该元素是唯一的,比如海淀,就只要//,如果有多个地方,比如肯德基,那就要再确定上一层
"//": 定位根节点
"/": 往下层寻找
/text(): 提取文本内容
/@***: 提取属性内容
eg:
'//ul[@id="useful"]/li/text()':提取ID为useful的文本内容
'//ul/li/text()':提取所有ID的文本内容
‘//div[@id="url"]/a/@href’: 提取a标签下的链接
‘//a/@title’: 提取a标签下的文本信息
4.5 特殊用法
a. 以相同字符开头
eg:
<div id="test1">...</div>
<div id="test2">...</div>
解决:
'//div/[start-with(@id,"test")/text()]' 提取 div 标签下 id 为test开头的文本
b. 标签套标签,提取一整句话string(.)
eg:
<div id="test1">转发,
<font color = red> 转发内容</font>
</div>
解决:
类似与正则,先大后小
data = selector.xpath('//div[@id="test3"]')[0]info = data.xpath('string(.)')content_2 = info.replace('\n','').replace(' ','')print content_2
五 Python 并行化:map内置函数
from multiprocessing.dummy import Poolpool = Pool(4)#表明4核,4个线程
results = pool.map(爬取函数,网址列表)
如果HTML中有JSON源代码,则import json来解析这些代码
另:编码错误时,可以使用下面方法
import sysreload(sys)sys.setdefaultencoding('utf-8')
顺带:pyCharm 注释快捷键 command + /
别人写的好爬虫代码
点击打开链接
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- MySQL连接问题浅析
- 安卓so库你应该注意的事
- 数据库面试题 Java 程序员 SQL 深入解析(一)
- linux 下 openOffice swftools 的安装
- LinearLayout设置白色背景、灰色边框、倒圆角
- 爬虫
- cURL进行HTTPS连接POST数据
- JS 字符串操作函数 往指定位置插入字符 删除指定位置字符 替换指定位置字符
- Linux 安装python插件 测网速
- ft5x06 touchscreen的selftest
- hibernate多对多关系查询
- C#-计算水仙花数
- mysql group by
- iOS Xcode编译Undefined symbols for architecture xxx 错误总结