初学爬虫知识
非常欢迎您指出所在:
爬虫分为四步走:
1、分析需求 : 分析需求十分重要的,在爬虫学习者面前,总觉得这一步不是很重要,但是我们在进行需求分析时,可以全面的对自己想要内容进行解析,在实现的步骤进行调控,
2、获取网页
3、解析网页
4、存储数据
这四个过程中第一步:其中涉及代码比较少,但是这是我们思路的体现,以及后期我们将进行实现
第二步:网页的请求,我们将用到python的requests库,这个库是python请求数据时最好用的一个库了,还有urllib库,但是使用,requests.get(网页地址),post等方法可以直接将网页数据提取出来,然后进行解析
第三步,对爬虫数据进行提取我们一般有四种方式,正则表达式(这不仅对爬虫有用,其他学习也很重要),Beautifulsoup,xpath(这个对网页结构了解,有点重要),pyquery,css选择器,各种解析方式不一,请有效选择。
第四步,就是存储了,这是很重要的,可以用json,text,excel等等方式去存储,推荐使用数据库mysql,mongodb去存储,即使不会,但是慢慢实现,以便于后期的学习。一点建议,敬请采纳。
对百度关键词进行提取:
------------------------------------------------------------------------------
# 可以提取关键词,注意正则表达式的书写
#
# 注意正则表达式的书写注意正则表达式的书写
import re
import requests
url='http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=88093251_34_hao_pg&wd=%E6%97%85%E6%B8%B8&oq=seo&rsv_pq=f8adeb760002afff&rsv_t=f83bfcsX9Goax6xBgKyNaj5KW5LESedfp1xcwztph%2FBlsm7Xb5mbvi7sKGbmOuZA5eOY7KBj74zm&rqlang=cn&rsv_enter=1&rsv_dl=tb&inputT=8426&rsv_sug3=18&rsv_sug1=22&rsv_sug7=101&rsv_sug2=0&rsv_sug4=8762'
headers={'User-Agent:':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36'}
html=requests.get(url,headers,timeout=10).text
# print(html)
redata=re.compile(r'<th><a href="/s\?wd.*?">(.*?)</a></th>')
for i in re.findall(redata,html):
print(i)
'''使用xpath进行查找。xpath是一种html一种语言
节点 '''
from lxml import html
lx_html='''<?xml version="1.0" >
<bookstore>
<book category="COOKING" class="book">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>'''
# 一开始尝试了网上的办法发现都比较麻烦,
# 因为去找老版本的lxml或者换python版本太麻烦了,后来在一篇博客的评论中找到了正确的办法,
# 其实虽然网上说的是python 3.5之后的lxml中不再有etree,但是其实这种说法是有问题的,
# 虽然新版本无法直接from lxml import etree这样,但是它只不过是换了一个办法引出etree模块而已!
# 正确的引用方法是:
etree=html.etree
htmlDiv=etree.HTML(lx_html)
# print(htmlDiv.xpath(//bookstore))
#其返回类型为
title = htmlDiv.xpath("//bookstore")
print(title)
#选取第一本书的title
print(htmlDiv.xpath("//bookstore/book[1]/title/text()"))
#选取最后一本书书的title
print(htmlDiv.xpath("//bookstore/book[last()]/title/text()"))
# 选取倒数第二本书的所有作者
print(htmlDiv.xpath("//bookstore/book[last()-1]/author /text()"))
#contain将选取所有class属性中包含书本属性
print(htmlDiv.xpath(" //book[@category="CHILDREN"]/text"))
这是基本实现过程,望本文对你有所帮助
后期持续更新,敬请期待
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45014634/article/details/103186487