概述
工作总是充满挑战的,作为一个敲php代码的码农,应因需求学了一下python,由于网上python2.7的教程比较多,本人果断安装的2.7版本,不过3.5版本已经有了。。。请勿嫌弃。鄙人才疏学浅,仅将自己采坑爬坑的点总结了一下,得出下面的一段小教程,经与同事分享,还是可以的。第一次写博客,哈哈哈,share 起来!
一、python安装及相关使用 (才疏学浅,但喷血整理)
1、版本:python2.7.14
下载地址:https://www.python.org/
下载后直接安装,默认安装在C盘
安装后配置环境变量,path:我的电脑->属性->高级系统设置->环境变量->xx的用户变量->path->编辑,增加一条:C:Python27。配置好后保存。
打开cmd,输入python.exe,回车后出现版本信息等,即表示配置成功。
2、爬取网站
(1)了解网站的robot.txt(robot协议:提示哪些路径禁止爬取,不过非高频爬取是可以的)如:http://www.utc-ic.com/robots.txt
(2)爬取步骤:
(i)安装第三方库:requests
requests文档:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
requests用于获取指定url的html内容
安装方法:1、打开cmd
2、使用cd 打开至python内的Scripts文件,回车,输入pip install requests,等待提示信息
3、测试是否安装成功,打开IDLE,输入import requests,回车,不报错即表示安装成功
使用方法:1、新建一个*.py文件
2、设置文本编码:#coding:utf8
3、引入requests:import requests
4、简单的获取html
发送请求:常用的有get、post、put、delete、head、option等
若网页不需要用户登录或cookie等,get请求便可满足
r = requests.get(url,params) 注:r为response对象,存储了服务器的响应内容
url如:http://www.utc-ic.com/
params传其他参数:如将爬虫伪装成某个浏览器(如:Mozilla/5.0、AppleWebKit/537.36、Chrome/62.0.3192.0 、Safari/537.36等)
示例:
head = {'User-Agent': 'Mozilla/5.0'}
url = 'http://www.utc-ic.com/'
response = requests.get(url, headers=head, timeout=30) # response 为一个对象
# 获取状态码
response.status_code # 200为访问正常,其他均为访问失败
# 抛出异常
response.raise_for_status() # 200为正常 注:常用于try: except: 中
# 获取response对象的head信息
response.headers
# 获取发起请求的头部信息
response.request.headers # 若爬虫伪装成某浏览器,则显示的是伪装后的user-agent(如:'user-agent': 'Mozilla/5.0'),否则是:'User-Agent': 'python-requests/2.18.4'(爬虫很诚实呀)
# 设置编码为文本内容编码
r.encoding = r.apparent_encoding # 注:r.encoding为从HTTP header中猜测的响应内容编码方式,如果header中不存在charset,则认为编码为ISO-8859-1 r.apparent_encoding 从内容中分析出的响应内容编码方式
# 获取url对应的页面内容
html = r.text # 我们的目标啊!!!(注意:区分于r.content,r.content获取HTTP响应内容的二进制形式)
# 打印下前500个字符看看
print html[:500]
(ii)安装BeautifulSoup
中文文档:https://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html
BeautifulSoup可通过DOM节点的方式获取您想要的内容
安装方法:1、打开cmd
2、使用cd 打开至python内的Scripts文件,回车,输入pip install beautifulsoup4,等待提示信息
3、最后出现Successfully installed Beautifulsoup4即表示安装成功
使用方法:1、引入BeautifulSoup:from bs4 import BeautifulSoup
2、使用html.parser解析html
示例:soup = BeautifulSoup(html, 'html.parser') # html为(i)中获取得到的
# 将html缩进整理
soup.prettify()
# 查找一个符合某一标签的某属性的html部分
target = soup.find('table', attrs={'width': 680}) # 第一个符合此标签的内容 soup.find(标签, 属性)
# 查找所有符合某一标签的某属性的html部分
targets = soup.find_all('table', attrs={'width': 680})
# 获取目标中的文字内容
target.text
# 注意:通常在选择匹配过程中需要用到正则匹配,这是需要引入re模块:import re
re 有search、match、findall等方法。如:re.match(r'[1-9]d{5}', 'BAT 100081'),注:第一个参数为正则规则,第二个参数为待匹配的字符串,search为从头匹配
re 的其他教程依需求搜索吧。。。鄙人学艺不精,推荐菜鸟教程:http://www.runoob.com/python/python-reg-expressions.html
(iii)如何生成excel呢?
A:第三方库xlwt
安装方法:pip install xlwt
使用方法:1、import xlwt
示例:# 创建workbook,同时设置编码
workbook = xlwt.Workbook(encoding='utf-8')
# 创建一张sheet表,如名为:test
sheet = workbook.add_sheet('test', cell_overwrite_ok=True)
# 坐标法写入内容
sheet.write(x,y, text) # x:横坐标; y:纵坐标 ; text:待写入的内容
# 保存Excel
workbook.save(path) # path为该文件保存路径,同时设定了.xls文件名称,如:'D:/EXCEL/test.xls'
(iiii)我想建立文件夹。
python自带os模块,可用于建立文件夹
示例:1、引入os模块:import os
2、定义一个目录路径,如:path = "D:/Excel/work/"
3、判断path是否存在,若不存在则多级建立(比较方便)
if not os.path.exists(path) :
os.makedirs(path)
4、so easy end
(v)如何爬取动态页面?
工具:selenium + chromedriver
工具装起:1、下载并安装seleinum:https://pypi.python.org/pypi/selenium#downloads (内含教程及四大浏览器相应驱动器的下载地址)
将selenium-3.6.0-py2.py3-none-any.whl放在python27下
在cmd中 pip install selenium
2、下载谷歌驱动器
送上一篇博客:http://blog.csdn.net/wang8978/article/details/52934506,里面有驱动器下载地址
我的谷歌浏览器版本是: 62.0.3192.0(正式版本) (32 位)
查看版本方式:浏览器右上角三个垂直点->帮助->关于 Google Chrome
针对 62.0.3192.0 版本,我选择的驱动器版本为2.30(chromedriver_win32.zip),使用最高版本时可驱动浏览器,但无法打开网址。
下载后,解压,将chromedriver.exe放在Python27下即可,无需其他操作
3、送上一篇相关视频教程:http://www.iqiyi.com/w_19ru4zw6w9.html
示例代码:
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get(url)
# 判断加载是否成功
image = wait.until(
EC.element_to_be_clickable((By.CSS_SELECTOR, "#product-tree-button > div.right-module-text")) # 通过css选择器获取需点击的内容
)
image.click()
# 等待判断,获取点击后的页面html,转码
html = driver.page_source
html_encode = html.encode('utf8')
结束!
心累,过程中可能出现编码问题,尝试用下面的方法解决
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
还不行的话,问问度娘吧
最后
以上就是传统书包为你收集整理的基于python2.7的爬虫入门教程的全部内容,希望文章能够帮你解决基于python2.7的爬虫入门教程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复