python模块使用

作者 新城 日期 2017-09-25
python模块使用
urllib pyquery的简单实用 phantomjs

比较 urllib使用相对比pyquery繁琐
后者自带解析html工具 高效方便 建议抓取html页面的话使用pyquery
调用接口的话使用Request

urllib

1
2
3
4
import urllib.request

html = urllib.request.urlopen('http://www.baidu.com').read().decode('utf-8')
print(html)

输出 百度返回的html

解析
首先引入了urllib模块 然后使用了该模块的request模块中的urlipen方法,像百度的服务器发送了 请求
然后等待返回内容 我们使用read方法读取设置编码为utf-8
如果不设置编码的话 会输出一堆压缩解析的乱码 可自测

设置请求头

1
2
form urllib.request import Request
urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

headers = {
此处设置请求头
}

pyquery的使用

selenium使用

问题
使用pyquery可以爬取一号店,京东,飞牛,苏宁,淘宝 无法爬取天猫,亚马逊的商城
解决办法
计划使用selenium通过操作浏览器去模仿鼠标事件 进行自动查找

第一步 下载安装selenium
pip install selenium
第二部下载谷歌驱动
谷歌浏览器驱动下载地址
第三部 将驱动解压以后放置到和谷歌浏览器同级目录下
第四部 执行以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from selenium import webdriver
import os
#引入chromedriver.exe
chromedriver = "C:/Users/Administrator/AppData/Local/Google/Chrome/Application/chromedriver.exe"
os.environ["webdriver.chrome.driver"] = chromedriver
browser = webdriver.Chrome(chromedriver)

#设置浏览器需要打开的url
url = "http://www.baidu.com"
browser.get(url)

#在百度搜索框中输入关键字"python"
browser.find_element_by_id("kw").send_keys("python")
#单击搜索按钮
browser.find_element_by_id("su").click()

#关闭浏览器
#browser.quit()

程序会自动打开浏览器进去百度页面搜索 python关键词

selenium元素查找基本手册