环境
OS : Windows 10 1511
Python -v : 3.5.1 win32
IDE : Pychram 2016.1.2
Test Browser : Firefox
DB : MySQL
模块准备
urllib 内置,获取 HTML,容易被封
Selenium 需安装,配合浏览器获取 HTML
BeatifulSoup4 需安装,文档,分析 HTML
pymysql 需安装,操作 MySQL
思路
优先使用 urllib 进行网页抓取,如果完全被禁,使用 Selenium,后者默认使用带 UI 的浏览器 Firefox ,可使用无 UI 浏览器取代。
Selenium / urllib 取出数据所在的 HTML 代码,交给 BeatifulSoup4 做具体抽取
可通过列表(数组)、字典(关联数组),或类来存储页面上的结构化数据
将内存中的数据通过 pymysql 存入 MySQL 数据库
一些细节
Selenium
设置加载页面的时间,防止被墙的脚本拖延页面加载时间 driver.set_page_load_timeout(num)
使用 XPath 获取元素 driver.find_element_by_xpath(‘//body’)
得到元素 HTML 代码 body.get_attribute(‘innerHTML’)
BeatifulSoup4
使用 urllib.parse.unquote() 对链接中的 URL 转码进行还原
SQL
使用 INSERT IGNORE INTO 取代 INSERT INTO,避免主键重复造成的错误