有思俱乐部学习园地

网页数据分析


简介

 递归爬取所有网页后,接下来就是从网页中获取需要的title,keywords,description,content字段的值,python中有很多库可以使用,此处主要用XPath库,Re库。

XPath简介及项目中用到的获取数据的方法

 XPath可以采用如下方式获取数据,简单易懂,但要获取特定标签中的内容还是需要查阅很多资料
   response.xpath('/html/head/title/text()')  获取title中的文字
   response.xpath("//meta[@name='keywords']/@content")  获取meta中的keywords
   response.xpath("//meta[@name='description']/@content") 获取meta中的description
   response.xpath('/html/body').xpath('string(.)') 获取body中的所有字符串
总结:xpath可以通过 /html/body/div/div逐层获取数据,这是xpath的精髓.

把获取的数据插入数据库

 为了更好的分析爬取的数据,把上述分析好的数据插入数据库是一个不错的选择,下一节讲解如何把需要的字段信息插入数据库

其他学习链接

  从获取的html文件中得到需要的title,description,img等数据需要做字符串匹配操作,听说python很擅长做这部分操作,此处列举了一些常用的方法.
Scrapy使用XPath的表达式的机制来获得html或xml中的内容。这里只记录下html的使用
你可以用scrapy shell来测试selector的用法,官网提供了一个简单的测试页面给你使用:
http://doc.scrapy.org/en/latest/_static/selectors-sample1.html
选择器学习网址如下:https://www.jianshu.com/p/26da91b38df7

xpath 语法介绍 https://www.cnblogs.com/MUMO/p/5732836.html

用shell抓回来的页面,默认的对象是hxs。
获取title标签
hxs.select("//title")
select函数返回的是一个XPathSelectorList
获取title标签中的文本
hxs.select("//title/text()")
只显示文本,而不是一个XPathSelectorList
hxs.select("//title/text()").extract()
获取标签中的属性,例如获取href属性中的内容
hxs.select('//base/@href').extract()
使用contains函数查找指定内容,格式为:
contains(str1, str2) # str1中有str2,则返回true,例如以下表达式输出链接文字中包含image的链接:
hxs.select('//a[contains(@href, "image")]/@href').extract()
如果你想获取div标签中的所有p标签的内容,你不能这样写:
divs=hxs.select("//div")
for p in divs.select("//p")  # 获取所有的p标签中的内容,而不是仅是div中的内容
    print p.extract()

正确的写法:
divs=hxs.select("//div")
for p in divs.select(".//p")  
    print p.extract()
或者
divs=hxs.select("//div")
for p in divs.select("p")  
    print p.extract()

HtmlXPathSelector 需要一个html_response作为参数:
x = HtmlXPathSelector(html_response)

工作人员

 
               
作者:XXX
信息录入:XXX
文案编辑:XXX
视频录制:XXX
视频编辑:XXX
图片编辑:XXX
关键字修改:陈鑫