[TOC]

python爬虫

1、Python爬虫架构

Python 爬虫架构主要由五个部分组成,分别是调度器、URL管理器、网页下载器、网页解析器、应用程序(爬取的有价值数据)。

调度器:相当于一台电脑的CPU,主要负责调度URL管理器、下载器、解析器之间的协调工作。 URL管理器:包括待爬取的URL地址和已爬取的URL地址,防止重复抓取URL和循环抓取URL,实现URL管理器主要用三种方式,通过内存、数据库、缓存数据库来实现。 网页下载器:通过传入一个URL地址来下载网页,将网页转换成一个字符串,网页下载器有urllib2(Python官方基础模块)包括需要登录、代理、和cookie,requests(第三方包) 网页解析器:将一个网页字符串进行解析,可以按照我们的要求来提取出我们有用的信息,也可以根据DOM树的解析方式来解析。网页解析器有正则表达式(直观,将网页转成字符串通过模糊匹配的方式来提取有价值的信息,当文档比较复杂的时候,该方法提取数据的时候就会非常的困难)、html.parser(Python自带的)、beautifulsoup(第三方插件,可以使用Python自带的html.parser进行解析,也可以使用lxml进行解析,相对于其他几种来说要强大一些)、lxml(第三方插件,可以解析 xml 和 HTML),html.parser 和 beautifulsoup 以及 lxml 都是以 DOM 树的方式进行解析的。 应用程序:就是从网页中提取的有用数据组成的一个应用。

2、简介

  • urllib和正则+scrapy框架(适合所有,但是笨重)
  • requests和BeautifulSoup(不适合复杂的网页页面)
  • lxml(速度最快)
  • selenium

推荐lxml

3、如何爬取网页表格数据

https://www.zhihu.com/question/26385408 爬山虎采集 直接用pandas啊,简单方便selenium

import pandas as pd data =pd.read_html(url)[0]

gooseeker.com

http://www.pa1pa.com

使用requests + BeautifulSoup 使用简单。

八爪鱼数据采集器

使用requests+re的路线

4、各种爬虫模板

字符串查找

字符串查找判断需要写明!=-1

保存图片

img_path = 'http://www.baidu.com/img.jpg'
img_name = './image/{}.jpg'.format(number)
img = requests.get(img_path, headers=header).content
with open(img_name, 'wb') as save_img:
    save_img.write(img)

4-1、 requests和BeautifulSoup



4-2、Selenium WebDriver

强大如斯(速查):https://www.jianshu.com/p/1b63c5f3c98e

准备工作

使用selenium,安装conda install selenium 下载chrome驱动文件:http://npm.taobao.org/mirrors/chromedriver

基础调用

chromedriver_path = r"C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe"
driver = webdriver.Chrome(chromedriver_path)    #打开浏览器
driver.maximize_window() #最大化窗口

driver.get(url) #打开网页
time.sleep(2)   #时刻需要睡眠等待一下

#### 模拟鼠标滑动
方法1:失败

from selenium import webdriver driver = webdriver.Firefox() driver.set_window_size(1000,30000) driver.get(url) time.sleep(5)

方法2:成功

from selenium import webdriver driver = webdriver.Firefox() driver.get(url) driver.execute_script("window.scrollBy(0,3000)") time.sleep(1) driver.execute_script("window.scrollBy(0,5000)") time.sleep(1) ```

results matching ""

    No results matching ""