昨晚晚上一不小心学习了崔庆才,崔大神的博客,试着尝试一下爬取一个网站的全部内容,福利吧网站现在已经找不到了,然后一不小心逛到了汽车之家 (http://www.autohome.com.cn/beijing/)
很喜欢这个网站,女人都喜欢车,更何况男人呢。(捂脸)
说一下思路:
1 . 使用CrawlSpider 这个spider,
2. 使用Rule
上面这两个配合使用可以起到爬取全站的作用
3. 使用LinkExtractor 配合Rule可以进行url规则的匹配
4. FormRequest 这是scrapy 登陆使用的一个包
注意:这里进行全站的爬取只是单纯的把以 .html 的url进行打印,保存到json文件,
这里我们还可以继续往下深入的,进行url下的内容提取。
说一下提取的思路:这里我们可以随便找一个url下的内容,然后找到想要提取到的内容,进行xpath提取,
xpath 的一般提取规则:选中想要提取内容的那一行,然后右键copy --> copy xpath 就可以啦,这里老司机说是最好用chrom浏览器的xpath,火狐可能有时候提取不到想要的元素,
xpath提取的简单并且常用的规则:
//*[@id=”post_content”]/p[1]
意思是:在根节点下面的有一个id为post_content的标签里面的第一个p标签(p[1])
如果你需要提取的是这个标签的文本你需要在后面加点东西变成下面这样:
//*[@id=”post_content”]/p[1]/text()
后面加上text()标签就是提取文本
如果要提取标签里面的属性就把text()换成@属性比如:
//*[@id=”post_content”]/p[1]/@src
So Easy!XPath提取完毕!来看看怎么用的!那就更简单了!!!!
response.xpath(‘你Copy的XPath’).extract()[‘要取第几个值’]
注意XPath提取出来的默认是List。
上面就是简单的提取规则,是不是很容易懂,我觉着也是,比之前学的容易懂多了,可能我现在还是个小白吧。哈哈哈。
附录一下:
关于imgurl那个XPath:
你先随便找一找图片的地址Copy XPath类似得到这样的:
//*[@id=”post_content”]/p[2]/img
你瞅瞅网页会发现每一个有几张图片 每张地址都在一个p标签下的img标签的src属性中
把这个2去掉变成:
//*[@id=”post_content”]/p/img
就变成了所有p标签下的img标签了!加上 /@src 后所有图片就获取到啦!(不加[0]是因为我们要所有的地址、加了 就只能获取一个了!)
关于XPath更多的用法与功能详解,建议大家去看看w3cschool
看来我确实没有怎么看w3c