爬虫
爬虫的基本原理
- 需要爬取的网页地址
- 执行爬取策略的任务调度器
- 访问页面或下载数据的下载器
- 分析和提取页面内容的解析器
- 保存爬得数据结果的存储器
1.由用户给定一组网页URLs,作为爬虫 程序的输入,爬虫程序会将它们存放在待 爬取队列中。
2.调度器(Scheduler)会从待爬取URL 队列中逐一取出URL,判断该URL是否已 经被爬取过,即执行去重判断,之后,按 照一定的遍历策略或负载策略,对URL发 起网络爬取任务,也就是执行相应的 HTTP请求。
3.下载器将逐一执行调度器产生的每个 HTTP请求,下载对应的Web内容,返 回结果包括:HTML网页、CSS文件、 JavaScript、图片等等。
4.解析器对下载器获得的HTML页面内 容进行解析,提取出用户关心的部分内 容,这其中,既包括用户感兴趣的关键 数据;也包括有待下一步爬取的新的 URLs
5.存储器负责按照一定的存储模式,将 解析器提取得到的用户兴趣数据存储到 文件或数据库中,以供后续数据分析和 处理使用。
6.解析器提取的需要进一步爬取的新 URLs,会被送往待爬取URLs队列。
爬虫常用方法
Padans模块直接读取网页中的表格
pandas 是基于NumPy 的一种工具,可以用于解析html中的表格
import urllib.request
import pandas as pda # 导入pandas,同时需要安装lxml包
url = "http://www.maigoo.com/news/463071.html"
response = urllib.request.urlopen(url)
contents = pda.read_html(response)[0] # contents类型为DataFrame:二维的表格型数据结构
contents.to_csv('统计.csv', encoding='utf_8_sig', header=0, index=0) # 写入文件
print(contents)
Scrapy
Scrapy详解 https://www.cnblogs.com/Summer-skr--blog/p/11477117.html
scrapy爬虫框架的数据保存方式(包含:图片、文件的下载) https://blog.csdn.net/qq_33472765/article/details/80953078
小技巧
获取response的cookie
- 使用requests
url = "http://www.baidu.com/"
response = requests.get(url)
print(type(response.cookies))
cookies = requests.utils.dict_from_cookiejar(response.cookies)
print(cookies)
- 利用selenium
from selenium import webdriver
driver=webdriver.PhantomJS()
url="https://et.xiamenair.com/xiamenair/book/findFlights.action?lang=zh&tripType=0&queryFlightInfo=XMN,PEK,2018-01-15"
driver.get(url)
# 获取cookie列表
cookie_list=driver.get_cookies()
# 格式化打印cookie
for cookie in cookie_list:
cookie_dict[cookie['name']]=cookie['value']
Comments | 0 条评论