设为首页 收藏本站
查看: 810|回复: 0

[经验分享] python爬虫取图片详解,

[复制链接]

尚未签到

发表于 2018-8-13 09:55:42 | 显示全部楼层 |阅读模式
  接下来会依次准备三个案例(如果要把每一个点都精通的话大约要花费一个月,我说的精通是指自己将代码不用查资料写出来,以下暂未整理):
  import requests,threading#多线程处理与控制
  from lxml import etree
  from bs4 import BeautifulSoup
  #获取源码
  def get_html(url):
  url='http://www.doutula.com/?qqdrsign=01495'
  #获取网络地址,但这个地方写死了,怎么办呢,因为我们还没有做多页
  headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36'}
  #上一步是模拟浏览器信息,固定格式,可记下来
  request=requests.get(url=url,headers=headers)#对网址发送一个get请求
  response=request.content#获取源码,比test稍微好一点
  #print(response)
  return response
  #接下来是获取外页,即图片自身的源码
  def get_img_html(html):
  soup=BeautifulSoup(html,'lxml')#解析网页方式,自带html.pparser
  all_a=soup.findall('a',class='list-group-item randomlist')#class是关键字所以此处加
  for i in all_a:

  print(i)#i是指<a>  img_html=get_html(i['href'])#是用来获取超链接这一部分源码
  print(img_html)
  #http://www.doutula.com/article/list/?page=2
  a=get_html(1)
  get_img_html(a)
  好了,我们已经可以获取一部分的源码了,这样,我们接下来的工作是开始做多页
  import requests,threading#多线程处理与控制
  from lxml import etree
  from bs4 import BeautifulSoup
  #获取源码
  def get_html(url):
  #url='http://www.doutula.com/?qqdrsign=01495'#获取网络地址,但这个地方写死了,怎么办呢,因为我们还没有做多页
  headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36'}
  #上一步是模拟浏览器信息,固定格式,可记下来
  request=requests.get(url=url,headers=headers)#对网址发送一个get请求
  response=request.content#获取源码,比test稍微好一点
  #print(response)
  return response
  #接下来是获取外页,即图片自身的源码
  def get_img_html(html):
  soup=BeautifulSoup(html,'lxml')#解析网页方式,自带html.pparser
  all_a=soup.findall('a',class='list-group-item randomlist')#class是关键字所以此处加
  for i in all_a:

  print(i)#i是指<a>  img_html=get_html(i['href'])#是用来获取超链接这一部分源码
  print(img_html)
  #http://www.doutula.com/article/list/?page=2
  def main():
  start_url='http://www.doutula.com/article/list/?page='
  for i in range(1,10):
  start_html=get_html(start_url.format(i))#将前十页的页数传递进来,来获取前十页源码
  get_img_html(start_html)#来获取图片所在的链接源码
  main()
  最后是总的源码:
  import requests,threading#多线程处理与控制
  from lxml import etree#解析方式,直接找到里面的内容
  from bs4 import BeautifulSoup
  #获取源码
  def get_html(url):
  #url='http://www.doutula.com/?qqdrsign=01495'#获取网络地址,但这个地方写死了,怎么办呢,因为我们还没有做多页
  headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36'}
  #上一步是模拟浏览器信息,固定格式,可记下来
  request=requests.get(url=url,headers=headers)#对网址发送一个get请求
  response=request.content#获取源码,比test稍微好一点
  #print(response)
  return response
  #接下来是获取外页,即图片自身的源码
  def get_img_html(html):
  soup=BeautifulSoup(html,'lxml')#解析网页方式,自带html.pparser
  all_a=soup.findall('a',class='list-group-item randomlist')#class是关键字所以此处加
  for i in all_a:

  #print(i)#i是指<a>  img_html=get_html(i['href'])#是用来获取超链接这一部分源码
  get_img(img_html)
  #print(img_html)
  #http://www.doutula.com/article/list/?page=2
  #获取图片的url:
  def get_img(html):soup=etree.HTML(html)#%E8%A7%A3%E6%9E%90%E4%B9%8B%E5%89%8D%E7%9A%84%E5%88%9D%E5%A7%8B%E5%8C%96%EF%BC%8C%E8%87%AA%E5%8A%A8%E4%BF%AE%E6%AD%A3%E4%BB%A3%E7%A0%81%E7%9A%84
  items=soup.xpath('//div%5B@class=" artile_des>br/>soup=etree.HTML(html)#解析之前的初始化,自动修正代码的

  items=soup.xpath('//div[@class="artile_des"]')#@是用来选取属性,找到相应盒子
for item in items:imgurl_list=item.xpath('table/tbody/tr/td/a/img/@onerror')#onerror%E8%BF%99%E4%B8%AA%E6%98%AF%E6%89%80%E9%9C%80%E8%A6%81%E7%9A%84%E5%B1%9E%E6%80%A7%EF%BC%8C%E5%BE%88%E9%87%8D%E8%A6%81

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-551015-1-1.html 上篇帖子: Python语言入门(三)简洁易用的数组与List-newtonn的博客 下篇帖子: python 实现 2个文件替换更新
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表