爬虫基础知识与简单爬虫实现
Posted pyrene
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫基础知识与简单爬虫实现相关的知识,希望对你有一定的参考价值。
css规则:选择器,以及一条或者多条生命。
selector{declaration1;,,,;desclarationN}
每条声明是由一个属性和一个值组成
property:value
例子:
h1{color:red;fontsize:14px}
元素选择器:直接选择文档元素
比如head,p 类选择器: 元素的class属性,比如<h1 class =”important”> 类名就是important .important选择所有有这个类属性的元素 可以结合元素选择器,比如p.important
id选择器
元素的id属性,比如<h1 id=”aa”> id就是aa #aa用于选择id=aa的元素 可以结合元素选择器,比如,p.#aa 与类选择器的异同 id一个文档只能出现一次 id选择器不能使用单词列表 与类选择器一样,都区分大小写
属性选择器
选择有某个属性的元素,而不论值是什么 *[title]选择所有包含title属性的元素 a[href]选择所有带有href属性的锚元素 还可以有多个属性,比如:a[href][title],注意这里是要同时满足 限定值:a[href=”www.so.com”]
后代(包含)选择器
选择某元素后代的元素(层级不受限制) 选择h1元素的em元素:h1 em 子元素选择器 范围限制在子元素 选择h1元素的子元素strong:h1>strong
XPath语法:
路径表达式:
nodename选取此节点的错有子节点 /从根节点选取 //从匹配的当前节点选择文档中的节点,不考虑他们的位置 。选取当前节点 ..选取当前节点的父节点 @选取属性
谓语结构
嵌在[]中用来查找某个特定节点或者包含某个指定值的节点 /bookstore/book[1] 第一个book元素 /bookstore/book[last()最后一个book元素 /bookstore/book[position()<3]选取前两个 //title[@lang]选择所拥有名为lang的属性的title元素 /boolestore/book[price>35.00] 获取大于35以上的值
python处理xml方法
dom把整个xml读如内存,解析为树,因此占用内存大,解析满,有点是可以任意遍历树的节点
sax流模式,边度边解析,占用内存小,解析的,缺点是需要自己处理时间
量小用dom,量大用sax
SAX方法是用格式:
import string from xml.parsers.expat import ParserCreate ‘‘‘ 如果要做sax处理 首先要定义下面三个函数,并且绑定parser的方法 ‘‘‘ class DefaultSaxHandler:#创建一个SAX处理器 def start_element(self,name,attrs): self.name=name print("element:%s,attrs:%s"%(name,str(attrs))) def end_element(self,name): print("end element:%s"%name) def char_data(self,text): if text.strip(): print("%s ‘s text is %s‘"%(self.name,text)) handler=DefaultSaxHandler() parser=ParserCreate() #创建一个parser parser.StartElementHandler=handler.start_element #找到某一个标签 parser.EndElementHandler=handler.end_element parser.CharacterDataHandler=handler.char_data with open("book.xml","r") as f: parser.Parse(f.read())
Selenium简介和实战
简单实用 关键命令 find_element(s)_by_tag_name find_element(s)_by_css_selector find_element_by_id find_element_by_name find_elements_by_xpath find_elements_by_link_text find_elements_by_partial_link_text find_elements_by_class_name
简单配置:
安装:
在联网的情况下,在Windows命令行(cmd)输入pip install selenium即可自动安装selenium,安装完成后,输入pip show selenium可查看当前的selenium版本
二、安装三大浏览器驱动driver
1.chromedriver 下载地址:https://code.google.com/p/chromedriver/downloads/list
2.Firefox的驱动geckodriver 下载地址:https://github.com/mozilla/geckodriver/releases/
3.IE的驱动IEdriver 下载地址:http://www.nuget.org/packages/Selenium.WebDriver.IEDriver/
三、下载解压后,将chromedriver.exe , geckodriver.exe , Iedriver.exe发到Python的安装目录,例如 D:\python 。 然后再将Python的安装目录添加到系统环境变量的Path下面。
然后打开Python IDLE分别输入以下代码来启动不同的浏览器
启动谷歌浏览器
from selenium import webdriver browser = webdriver.Chrome() browser.get(‘http://www.baidu.com/‘) 启动火狐浏览器
from selenium import webdriver browser = webdriver.Firefox() browser.get(‘http://www.baidu.com/‘)
启动IE浏览器
from selenium import webdriver browser = webdriver.Ie() browser.get(‘http://www.baidu.com/‘)
爬取17火电商
#!/usr/bin/env python # -*- coding:utf-8 -*- from selenium import webdriver import time browser = webdriver.Firefox() browser.set_page_load_timeout(30) browser.get(‘http://www.17huo.com/search.html?sq=2&keyword=%E7%BE%8A%E6%AF%9B‘) page_info = browser.find_element_by_css_selector(‘body > div.wrap > div.pagem.product_list_pager > div‘) # print(page_info.text) pages = int((page_info.text.split(‘,‘)[0]).split(‘ ‘)[1]) for page in range(pages): if page > 2: break url = ‘http://www.17huo.com/?mod=search&sq=2&keyword=%E7%BE%8A%E6%AF%9B&page=‘ + str(page + 1) browser.get(url) browser.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(3) # 不然会load不完整 goods = browser.find_element_by_css_selector(‘body > div.wrap > div:nth-child(2) > div.p_main > ul‘).find_elements_by_tag_name(‘li‘) print(‘%d页有%d件商品‘ % ((page + 1), len(goods))) for good in goods: try: title = good.find_element_by_css_selector(‘a:nth-child(1) > p:nth-child(2)‘).text price = good.find_element_by_css_selector(‘div > a > span‘).text print(title, price) except: print(good.text)
结果:
1页有24件商品 2017秋冬新款女装毛呢格子大 ¥90.00 7923男士中长款风衣毛妮外套 货号:7923 ¥100.00 四季星座416(原xz401) 宽松中长款开衫长袖2017年秋 ¥150.00 羊毛甜美针织衫/毛衣蝙蝠袖20 ¥150.00 2017年秋季针织衫/毛衣羊毛 ¥150.00 厚中长款蝙蝠型针织衫/毛衣羊毛 ¥140.00 2017年秋季针织衫/毛衣甜美 ¥110.00 毛呢西装男秋冬季店主风韩版休闲 货号:x605 ¥95.00 四季星座263(原558) 店主风秋冬季韩版呢子西装男英伦 货号:x605 ¥95.00 四季星座263(原558) 时尚格子气质百搭蝙蝠型中长款厚 ¥120.00 蝙蝠型中长款厚长袖开衫2017 ¥140.00 2017秋冬新款女装韩版撞色拼 ¥85.00 秋季新品 男士毛衣纯色圆领薄款 货号:B407/M01/P30 ¥25.00 电商基地B407 条纹气质百搭韩版甜美蝙蝠袖长袖 ¥135.00 毛呢西装男店主秋冬季韩版休闲西 货号:x605 ¥95.00 四季星座263(原558) 蝙蝠袖甜美羊毛针织衫/毛衣20 ¥125.00 2017年秋季针织衫/毛衣羊毛 ¥140.00 中长款蝙蝠型开衫长袖2017年 ¥110.00 针织衫/毛衣羊毛甜美2017年 ¥110.00 时尚气质百搭甜美气质韩版羊毛长 ¥135.00 时尚气质百搭韩版甜美蝙蝠袖长袖 ¥150.00 蝙蝠袖甜美羊毛针织衫/毛衣20 ¥145.00 2017年秋季针织衫/毛衣羊毛 ¥125.00 甜美羊毛针织衫/毛衣蝙蝠袖长袖 ¥145.00 2页有24件商品 流苏斗篷披肩外套秋冬毛衣披风中 ¥145.00 秋冬新款喇叭袖圆领毛衣套头针织 ¥59.00 韩版宽松中长款套头毛衣女麻花高 ¥69.00 秋装新款圆领宽松套头麻花毛衣女 ¥46.00 新款毛衣女中长款连衣裙针织衫宽 ¥48.00 流苏毛衣女秋冬装2017新款套 ¥69.00 2017秋装新款韩版中长款宽松 ¥69.00 圆领宽松针织衫2017春秋新款 ¥69.00 毛衣女连衣裙秋冬套头中长款打底 ¥69.00 毛衣女套头秋季2017新款韩版 ¥59.00 中长款套头毛衣女秋冬韩版针织衫 ¥69.00 2017秋冬新款韩版中长款时尚 ¥69.00 春秋韩版气质修身高领毛衣女中长 ¥69.00 毛衣女套头秋季新款韩版纯色短款 ¥69.00 8417A-802-P175钱 ¥175.00 中长款套头毛衣女秋冬韩版针织衫 ¥69.00 MY630-P50 秋冬雪花针 货号:MY630-P50 ¥50.00 四季星座229 MY632-P45超柔质感羊毛 货号:MY632-P45 ¥45.00 四季星座229 MY632-P45 超柔质感羊 货号:MY632-P45 ¥45.00 四季星座229 MY632-P45 超柔质感羊 货号:MY632-P45 ¥45.00 四季星座229 中长款修身2017年秋季西装领 ¥610.00 四色!羊毛衫店主风 破洞毛衣 货号:A064-MY20 P65 ¥65.00 电商基地A064-1(原XZ606A) 中长款长袖2017年秋季暗扣西 ¥760.00 四色!羊毛衫线衫 破洞毛衣男店 货号:A064-MY20 P65 ¥65.00 电商基地A064-1(原XZ606A) 3页有24件商品 2017年秋冬季新款年轻女装短 ¥75.00 四色!羊毛衫线衫 破洞毛衣男店 货号:A064-MY20 P65 ¥65.00 电商基地A064-1(原XZ606A) 2017年秋季针织衫/毛衣长袖 ¥90.00 5903-P90-B215 2 货号:5903-P90-B215 ¥90.00 电商基地B215 西装领甜美暗扣2017年秋季长 ¥635.00 四色!羊毛衫店主风线衫 破洞毛 货号:A064-MY20 P65 ¥65.00 电商基地A064-1(原XZ606A) 针织衫/毛衣无袖套头中长款V领 ¥75.00 2017新款秋冬季中长款纯色针 ¥75.00 2017秋冬新款青年男士圆领毛 货号:D286 ¥55.00 电商基地A418 长袖2017年秋季修身系带甜美 ¥610.00 中长款直筒套头长袖2017年秋 ¥105.00 5903-P90-B215 2 货号:5903-P90-B215 ¥90.00 电商基地B215 2017年秋冬季新款年轻女装中 ¥110.00 2017年秋冬季新款年轻女装流 ¥90.00 2017新款秋冬季中长款纯色袖 ¥75.00 青少年秋季毛衣男学生款圆领毛线 货号:D288 ¥65.00 电商基地A418 针织衫/毛衣2017年秋季蝙蝠 ¥68.00 套头中长款无袖V领甜美纯色针织 ¥75.00 2017新款秋冬季中长款纯色针 ¥65.00 毛呢外套西装领单排扣2017年 ¥115.00 5903-P90-B215 2 货号:5903-P90-B215 ¥90.00 电商基地B215 春秋款潮流男士毛衣秋冬季圆领学 货号:D288 ¥65.00 电商基地A418 大咖 电商A088-M1710 货号:电商A088-M17102- ¥45.00 电商基地A088 2017年秋冬季新款年轻女装纯 ¥80.00
以上是关于爬虫基础知识与简单爬虫实现的主要内容,如果未能解决你的问题,请参考以下文章