前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我与Python爬虫的初次邂逅

我与Python爬虫的初次邂逅

作者头像
不会跳舞的鸟
发布2022-11-16 09:39:02
2120
发布2022-11-16 09:39:02
举报
文章被收录于专栏:不会跳舞的鸟

背景

自己一直喊着要学爬虫,但是总是因为各种各样的事情耽误了。最近感觉不能再颓废了,于是乎重新拾起来这个小小的目标,开始学习。

开始

先是在知乎上如何入门 Python 爬虫?这个问题下看了看爬虫的基本概念和原理,发现原理和我之前的理解并没有什么出入,只是集群那一块是我之前没有关注到的。

然后,我找到了一个技术博客,看着那位程序媛写的一系列教程,基于Python3开始了我爬取单页面图片的尝试。

HTTP库用的是Urllib,HTML的解析工具,选用的是BeautifulSoup这个库。

代码

代码语言:javascript
复制
from bs4 import BeautifulSoup
import urllib.request
#用做解析
import urllib.parse
#文件读写
import os

#返回请求到的内容
def url_open(url):
    req = urllib.request.Request(url)

    response = urllib.request.urlopen(req)
    html = response.read()
    return html

def get_links(url):
    # 获取HTML源码
    html = url_open(url)
    #解析HTML
    soup = BeautifulSoup(html, 'html.parser')
    #定位父div
    divs = soup('div', {'class': 'pic'})
    #存储img的列表
    img_addrs = []

    #拿到每一个div中的img及其的src
    for div in divs:
        img_urls = div.find('img')['src']
        img_addrs.append(img_urls)
    return img_addrs
def save_imgs(folder,img_addrs):
    for each in img_addrs:
        filename = each.split('/')[-1]
        with open(filename, 'wb') as f:
            #读取网络图片
            img = url_open(each)
            f.write(img)

def download_pic(folder = 'pic'):
    url = 'http://jcss.shangxin.link/spiderTest.html'
    img_addrs = get_links(url)

    os.mkdir(folder)
    os.chdir(folder)

    save_imgs('pic', img_addrs)

if __name__ == '__main__':
    download_pic()

这段代码的功能只是在一个单页面上爬取一些照片,由于初学,自己挂了个结构简单的测试页面以供爬虫爬取测试…

踩的坑

  • 在这里,我特别注意到了网上很多代码中用的是Urllib2这个库,到了Python3中无法运行,这是因为Urllib和Urllib2出现在python2中,在3中,统一整合Urllib ,而没有了Urllib2。
  • urllib.request.urlopen()的参数中输入的是一个页面地址,有一次忘记加上协议( http:// ),导致报错(这不算坑,逃…
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 开始
  • 代码
  • 踩的坑
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档