scrapy框架 & xpath常用基本语法
1、创建项目
scrapy startproject myproject #myproject 为项目名
2、列出所有模板
scrapy genspider -l
3、创建爬虫
scrapy genspider -t crawl zhihu zhihu.com # zhihu 为爬虫名 zhihu.com为爬取网站域名
scrapy genspider spiders zhihu.com # spiders为爬虫名 zhihu.com为爬取网站域名
4、运行spider
scrapy crawl spidername # 输出日志加源代码
scrapy crawl spidername --nolog # 只输出源代码
5、check 用来检查代码是否有错误
scrapy check
6、list 返回项目里面所有spider的名称
scrapy list
# fetch 输出日志及网页源代码 scrapy fetch http://www.baidu.com# fetch --nolog --headers 输出响应头 scrapy fetch --nolog --headers http://www.baidu.com # --nolog --no--redirect 禁止重定向 scrapy fetch --nolog --no--redirect http://www.baidu.com
7、编辑spider文件:
scrapy edit <spider> # 相当于打开vim模式,实际并不好用,在IDE中编辑更为合适。
8、将网页内容保存下来,并在浏览器中打开当前网页内容,直观呈现要爬取网页的内容:
scrapy view <url>
9、运行spider:
scrapy runspider spiders.py # spiders为爬虫py文件
xpath语法:
-
基础语法:
1 nodename:节点定位 2 . :当前节点 3 / :根节点 4 // :任意位置 5 ./ :从单签节点的根节点向下匹配 6 .//:从当前节点向下任意位置匹配 7 text():获取节点的文本 8 @属性:获取节点的属性
-
属性定位:多属性匹配 & 单属性多值匹配
1 多属性匹配:'//div/div/p[@class="item" and @name="ptag"]' 2 单属性多值匹配:'//div[contains(@class,"item")]'
-
按序选择
1 索引定位:'//div/ul/li[3]/text()' ,注意的是索引从1开始 2 last()函数:'//div/li[last()]/text()' ,定位最后一个;'//div/li[last()-1]/text()' ,定位倒数第二个 3 position()函数:'//div/ul/li[position()>1]/text()定位第一个以后不包含第一个
-
嵌套选择
1 进过xpath定位匹配到的节点,进行xpath匹配 2 li_list = '//div/ul/li' # 有10个li 3 for li in li_list: 4 title = li.xpath('表达式')
-
extract()与extract_first()区别
1 extract() 返回的所有数据,存在一个list里。
2 extract_first()返回的是一个string,是extract()结果中第一个值。