一.Xpath表达式基础
1.XPath与正则表达式简单对比。
(1)XPath表达式效率高一些。
(2)正则表达式功能强大一点。
(3)一般来说,优先选择XPath,但是XPath解决不了的问题用正则表达式解决。
2.常用的XPath表达式:
/ 逐层提取。
//标签名 提取所有名为的标签。
//标签名[@属性=属性值] 提取属性为的标签。(起限制作用)
@属性名 代表取某个属性。
text() 提取标签下面的文本。
3.实例:
提取网页的标题:/html/title/text()
提取所有div标签://div
提取div中
标签的内容: //div[@class=’tools’]
二.当当网商品信息爬取实战
(1)创建爬虫文件 dangdang
打开cmd进入指定的文件夹,输入语句:scrapy startproject dangdang 创建爬虫文件。
创建完之后如图所示:
(2)创建爬虫文件,基于basic 文件,域名为 dangdang.com(域名去主页url中查)。
在dangdang文件夹下输入 scrapy genspider -t basic dd dangdang.com
在spiders文件中就新建了一个爬虫文件,如图所示:
(3)打开pycham导入dangdandg爬虫工程,首先打开items.py 编写爬取目标。
在items.py中创建三个容器:title(用来存储标题),link(用来存储链接),comment(用来存储评论数)。
# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html
import scrapy
class DangdangItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
# 创建三个容器
title = scrapy.Field() # 存储标题
link = scrapy.Field() # 存储link
comment = scrapy.Field(