当前位置:   article > 正文

Python爬虫方法三部曲_爬虫三部曲

爬虫三部曲

 最近研究如何利用爬虫技术,抓取图书销量和店面信息。使用几个方法都没有抓到<span>标签下面的数值是空值,是不是做了反爬虫机制处理。刚好利用这个机会来复习一下爬虫三种方法。纯属个人爱好,不用于商用。希望有网友能告诉我为什么span的值是空值。

目录

抓取的网站

爬虫目的

挖坑路程

总结思路


抓取的网站

http://search.dangdang.com/?key=%D6%D8%B7%B5%C0%C7%C8%BA%B1%B3%BA%F3%B5%C4%B9%CA%CA%C2&act=input

网站的源码:

爬虫目的

抓取网站里面各个商铺的名字、书名、还有价格、还有简介。

挖坑路程

方法一

BeautifulSoup模块进行抓取。【bs方法抓取很快,上手也很快。看一下源代码的架构就模仿出来进行抓取。不管是抓标签p,标签a,标签li等标签内容。注意抓取的select方法,是逐级往下进行筛选。】

  1. import requests
  2. import urllib.request
  3. from bs4 import BeautifulSoup
  4. def get_html(url):
  5. headers = {
  6. 'User-Agent': 'Mozilla/5.0(Macintosh; Intel Mac OS X 10_11_4)\
  7. AppleWebKit/537.36(KHTML, like Gecko) Chrome/52 .0.2743. 116 Safari/537.36'
  8. } # 模拟浏览器访问
  9. response = requests.get(url, headers=headers) # 请求访问网站
  10. html = response.text # 获取网页源码
  11. return html # 返回网页源码
  12. soup = BeautifulSoup(get_html('http://search.dangdang.com/?key=%D6%D8%B7%B5%C0%C7%C8%BA%B1%B3%BA%F3%B5%C4%B9%CA%CA%C2&act=input'), 'lxml') # 初始化BeautifulSoup库,并设置解析器
  13. get_html('http://search.dangdang.com/?key=%D6%D8%B7%B5%C0%C7%C8%BA%B1%B3%BA%F3%B5%C4%B9%CA%CA%C2&act=input')
  14. text = soup.select('#search_nature_rg > ul.bigimg > li > a ')#只定为到末级,中间不算。
  15. content3 = soup.select('#search_nature_rg > ul > li > div.lable_label > span.new_lable ')#定义自营门店
  16. print(content3)

抓取的结果:(方法是对的了,抓取a、p的值都能出现了。span标签有点特殊,我想不通我换了正则表达式方法进行计算一下。)

方法二:

正则表达式抓取某网span标签内容的代码。难度很大,但是搜索相当方便。

  1. import json
  2. import requests
  3. from requests.exceptions import RequestException #引入异常
  4. import re
  5. import time
  6. def get_one_page(url):
  7. try:
  8. response = requests.get(url)
  9. if response.status_code == 200: #由状态码判断返回结果
  10. return response.text #返回网页内容
  11. return None
  12. except RequestException:
  13. return None
  14. def parse_one_page(html):
  15. pattern = re.compile('.*?lable1.*?>(\D\D+)', re.S) #compile函数表示一个方法对象,re.s匹配
  16. items = re.findall(pattern, html) #以列表形式返回全部能匹配的字符串。
  17. print(items)
  18. def main(url):
  19. html = get_one_page(url)
  20. parse_one_page(html)
  21. if __name__ == '__main__':
  22. url = 'http://search.dangdang.com/?key=%D6%D8%B7%B5%C0%C7%C8%BA%B1%B3%BA%F3%B5%C4%B9%CA%CA%C2&act=input'
  23. main(url)

运行结果:(带有span标签的内容也是抓出来是空白项,两个方法都试过了,肯定span标签做了限制,或者有其他原因。)

 第三个方法:

(request方法)参考我的博客另一个链接的地址进行抓取了。这里不演示了。

用Python2.7.5抓取某某网的图片_业里村牛欢喜的博客-CSDN博客

总结思路

        使用request、bs、正则表达式方法都就可以抓取到网站的数据,reguest和bs的方法比较简单,正则表达式比较困难了,抓取的方法和抓取的速度不一致。选择最适合自己的方法进行爬虫抓取了,各个方法都会自己优越性。

 参考文献:Python网络爬虫入门篇 - z寒江雪 - 博客园

还有不计其数的网友提供的帮助。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/485981
推荐阅读
相关标签
  

闽ICP备14008679号