爬虫系列第三方库及工具

selenium
Selenium自动化浏览器。如何使用完全取决于你。主要是用于自动化Web应用程序进行测试,但肯定不仅限于此。无聊的基于Web的管理任务也可以(也应该!)也是自动化的。Selenium已经得到了一些最大的浏览器供应商的支持,这些供应商已经(或正在采取)使Selenium成为其浏览器的本地部分。它也是无数其他浏览器自动化工具,API和框架的核心技术。

beautifulSoup
是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.

phantomjs
一个服务器端的 JavaScript API 的 WebKit。其支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas,
无需浏览器的支持即可实现对Web的支持,且原生支持各种Web标准,如DOM 处理、JavaScript、CSS选择器、JSON、Canvas和可缩放矢量图形SVG。PhantomJS主要是通过JavaScript和 CoffeeScript 控制WebKit的CSS选择器、可缩放矢量图形SVG和HTTP网络等各个模块

python windows环境准备
2. windows 依赖环境 Visual C++ Redistributable https://www.microsoft.com/zh-CN/download/details.aspx?id=48145
3. python 包管理工具 pip
python3.4+已自带包管理器工具pip3
python 安装完成后,需要更新激活,即可在命令行使用 如下: 详情请见 https://docs.python.org/3/library/ensurepip.html
         
安装python必备环境之后,便可开始python编程
python IDE工具推荐
1.sublime text (强大的文本编辑器,支持插件安装,可直接执行py文件)
2.jupyter (web版编辑器)

selenium Windows环境
上一步已经安装PIP包管理器,接下来安装第三方工具及库,使用PIP安装
         

如做WEB应用程序自动化测试,需要下载webdriver http://www.seleniumhq.org/download/

下载对应的浏览器驱动,开始编码
#selenium 自动化测试---chrome模拟登录
import time
from selenium.webdriver.common.keys import Keys
#chromedriver绝对路径,启动chrome浏览器
browser = webdriver.Chrome("D:\Program_dev\chromedriver.exe")
#打开连接
browser.get('http://www.xyb2b.com/user/login')
//查找元素
funame = browser.find_element_by_name("funame")
funame.send_keys("bondbond")
time.sleep(1)
fpasswd = browser.find_element_by_name("fpasswd")
fpasswd.send_keys("123456")
time.sleep(1)
fpasswd.send_keys(Keys.RETURN)
time.sleep(2)
selenium + webdriver 模拟浏览行为,通过获取页面元素实现自动化
phantomjs
PhantomJS 的使用场景如下:
#phantomjs 截屏
from selenium import webdriver
import time
# 此处有坑注意executable_path的值前需加 " r "
driver = webdriver.PhantomJS(executable_path=r"D:\Program_dev\phantomjs-2.1.1-windows\bin\phantomjs.exe")
driver.get("http://www.xyb2b.com")
data = driver.title
print(data)
time.sleep(5)
driver.save_screenshot('d:/xyb2b2.png')

爬虫实例
#分页爬取海掏SKU信息--并写入文件
from selenium import webdriver
from bs4 import BeautifulSoup
#写入文件
def write_file(skuId, skuName, skuPrice):
f = open("d:/sku-test.csv", 'a',encoding='utf-8')
f.write(skuId + ','+ skuName + ',' + skuPrice + '\n')
f.close()
# BeautifulSoup解析每个SKU信息
def getSku(page_source):
print("解析出SKU信息...")
soup = BeautifulSoup(page_source, "html.parser")
skuList = soup.select(".homewrap1")
for sku in skuList:
skuItem = sku.select("a")[0]["data-sku"], sku.select(".wrap_2")[0].text.strip(), sku.select(".wrap_33")[0]("span")[0].text.strip()
write_file(sku.select("a")[0]["data-sku"], sku.select(".wrap_2")[0].text.strip(), sku.select(".wrap_33")[0]("span")[0].text.strip())
#抓取页面的SKU信息,此页面是AJAX分页
def getAll():
#如 无需浏览器的情况下进行快速的Web抓取,可用PhantomJS
driver = webdriver.Chrome("D:\Program_dev\chromedriver.exe")
driver.get("https://www.haitun.hk/Index/product/category_id/2.html")
#抓取列表总共条数
pageNum = driver.find_element_by_class_name("pagination_2")
pageNumSpan = pageNum.find_elements_by_tag_name("span")
print("总共",pageNumSpan[0].text,"页")
#循环每页列表数据并解析写入文件
for i in range(0,int(pageNumSpan[0].text)):
print("正在爬取第",i+1,"页")
skuItem = getSku(driver.page_source)
print("第",i+1,"页爬取完成\n")
nextPage = driver.find_element_by_id("page-next")
#加载下页
nextPage.click()
getAll()

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值