如果你的网站页面经常更新,爬虫就会更加频繁的访问页面,优质的内容更是爬虫喜欢抓取的目标,尤其是原创内容。
如果你做了许多努力仍没有被爬虫抓取,可以看一下老渔哥给出的两点建议:
1、不建议站点使用js生成主体内容,如过js渲染出错,很可能导致页面内容读取错误,页面则无法被爬虫抓取。
2、许多站点会针对爬虫做优化,建议页面长度在128k之内,不要过长。
我用Jsoup写爬虫,一般遇到html返回没有的内容。但是浏览器显示有的内容。都是分析页面的http请求日志。分析页面JS代码来解决。1、有些页面元素被隐藏起来了->换selector解决
2、有些数据保存在js/json对象中->截取对应的串,分析解决
3、通过api接口调用->伪造请求获得数据
还有一个终极方法
4、使用phantomjs或者casperjs这种headless浏览器
这个方法只是获取页面源码;你的要求是获取DOM结构;有一个方式,使用lxml库,先使用selenium获取整个html的DOM,再把Dom转存到lxml对象,这样的方式可以获取到正html Dom tree,下面例子:
def parse_from_unicode(unicode_str): #html DOM tree to lxml 格式
utf8_parser = lxml.etree.HTMLParser(encoding='utf-8')
s = unicode_str.encode('utf-8')
return lxml.etree.fromstring(s, parser=utf8_parser)
def parse(request):
driver = webdriver.PhantomJS()
html =driver.find_element_by_name('html')
lxml_html=parse_from_unicode(html)
kk=lxml_html.xpath('//tr') #使用xpath匹配
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)