爬虫基础知识与简单爬虫实现

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

  

时间: 2024-10-16 22:35:04

爬虫基础知识与简单爬虫实现的相关文章

Python网络爬虫基础知识学习

对Python有一些简单了解的朋友都知识Python编程语言有个很强大的功能,那就是Python网络爬虫(http://www.maiziedu.com/course/python/645-9570/),一提到Python,就会想到相关的Python爬虫和scrapy等等,今天就来简单认识学习Python爬虫的基础知识,有了一定的相关爬虫知识,以后学习scrapy.urllib等等知识时,会相对轻松些. 爬虫: 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组

Python爬虫基础知识及前期准备

学习爬虫有一小段时间了,于是决定把自己学爬虫时所学的,写过的代码以及看过的文档记录下来,权当小结.第一次写这些,如果有错误,请多指教. 首先我们需要了解一下什么是爬虫. 根据百度百科上给出的定义," 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本."简单来说,爬虫类似手动下载网页信息,比如小说.歌曲.说到这,或许会有疑问,既然这样,干嘛还去敲代码,直接人工处理不好吗?话是这么说,但如果下载的

爬虫基础以及一个简单的实例

最近在看爬虫方面的知识,看到崔庆才所著的<Python3网络爬虫开发实战>一书讲的比较系统,果断入手学习.下面根据书中的内容,简单总结一下爬虫的基础知识,并且实际练习一下.详细内容请见:https://cuiqingcai.com/5465.html(作者已把书的前几章内容对外公开). 在写爬虫程序之前需要了解的一些知识: 爬虫基础:我们平时访问网页就是对服务器发送请求(Request),然后得到响应(Response)的一个过程.爬虫通过模仿浏览器,对网页进行自动访问.需要知道请求包含哪些内

linux入门基础知识及简单命令介绍

linux入门基础知识介绍 1.计算机硬件组成介绍 计算机主要由cpu(运算器.控制器),内存,I/O,外部存储等构成. cpu主要是用来对二进制数据进行运算操作,它从内存中取出数据,然后进行相应的运算操作.不能从硬盘中直接取数据. 内存从外部存储中取出数据供cpu运存.内存的最小单位是字节(byte) 备注:由于32的cpu逻辑寻址能力最大为32内存单元.因此32位cpu可以访问的最大内存空间为:4GB,算法如下: 2^32=2^10*2^10*2^10*2^2 =1024*1024*1024

Python爬虫基础知识入门一

一.什么是爬虫,爬虫能做什么 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据. 爬虫可以抓取的某个网站或者某个应用的内容,提取有用的价值.也可以模拟用户在浏览器或者App应用上的操作,实现自动化的程序.以下行为都可以用爬虫实现: 咨询报告(咨询服务行业) 抢票神器 投票神器 预测(

自学Python之四 爬虫基础知识储备

首先,推荐两个关于python爬虫不错的博客:Python爬虫入门教程专栏   和 Python爬虫学习系列教程 .写的都非常不错,我学习到了很多东西!在此,我就我看到的学到的进行总结一下! 爬虫就是一个不断的去抓去网页的程序,根据我们的需要得到我们想要的结果!但我们又要让服务器感觉是我们人在通过浏览器浏览不是程序所为!归根到底就是我们通过程序访问网站得到html代码,然后分析html代码获取有效内容的过程.下面让我们从最简单的爬虫开始: 爬取一个页面源代码 在python中,抓取网页的库是ur

python 爬虫基础知识(继续补充)

学了这么久爬虫,今天整理一下相关知识点,还会继续更新 HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法. HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层. SSL(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障

第三章:爬虫基础知识回顾

第一节:技术选型,爬虫能做什么技术选型scrapy vs requests + beautifulsoup1. requests + beautifulsoup都是库,scrapy是框架2.scrapy框架中可以加入requests + beautifulsoup3.scrapy基于twisted,性能是最大的优势4.scrapy方便扩展,提供了很多内置的功能5.scrapy内置的css和xpath selector非常方便,beautifulsoup最大的缺点就是慢 网页分类常见类型的服务1.

【VB6】使用VB6创建和访问Dom树【爬虫基础知识 】

使用VB6创建和访问Dom树 关键字:VB,DOM,HTML,爬虫,IHTMLDocument 我们知道,在VB中一般大家会用WebBrowser来获取和操作dom对象. 但是,有这样一种情形,却让我们纠结不已: 我们需要做爬虫,然后爬虫不需要太高的效率,但是我们被复杂的正则表达式给弄的头晕眼花. 不知道何去何从. 今天,下定决心研究下html的解析,终于掌握了对IHTMLDocument等接口对象的使用. 源代码放在:http://www.extencent.com 具体的文章将会放在博客园以