前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python3 爬虫快速入门攻略

Python3 爬虫快速入门攻略

作者头像
py3study
发布2020-01-10 18:10:45
2.8K0
发布2020-01-10 18:10:45
举报
文章被收录于专栏:python3python3

Python3 爬虫快速入门攻略

一、什么是网络爬虫?

1、定义:网络爬虫(Web Spider),又被称为网页蜘蛛,是一种按照一定的规则,自动地抓取网站信息的程序或者脚本。

2、简介:网络蜘蛛是一个很形象的名字。如果把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从 网站某一个页面开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。

3、爬虫流程:①先由urllib的request打开Url得到网页html文档——②浏览器打开网页源代码分析元素节点——③通过Beautiful Soup或则正则表达式提取想要的数据——④存储数据到本地磁盘或数据库(抓取,分析,存储)

二、上代码,直接看注释

开发环境:Win10+Python 3.6.1 64bit+PyCharm,自学Python 3爬虫时的备忘笔记。

1、爬取简书网站首页文章的标题和文章链接

代码语言:javascript
复制
from urllib import request
from bs4 import BeautifulSoup            #Beautiful Soup是一个可以从HTML或XML文件中提取结构化数据的Python库

#构造头文件,模拟浏览器访问
url="http://www.jianshu.com"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
page = request.Request(url,headers=headers)
page_info = request.urlopen(page).read().decode('utf-8')#打开Url,获取HttpResponse返回对象并读取其ResposneBody

# 将获取到的内容转换成BeautifulSoup格式,并将html.parser作为解析器
soup = BeautifulSoup(page_info, 'html.parser')
# 以格式化的形式打印html
#print(soup.prettify())

titles = soup.find_all('a', 'title')# 查找所有a标签中class='title'的语句

'''
# 打印查找到的每一个a标签的string和文章链接
    for title in titles:
        print(title.string)
        print("http://www.jianshu.com" + title.get('href'))   
'''

#open()是读写文件的函数,with语句会自动close()已打开文件
with open(r"D:\Python\test\articles.txt","w") as file:       #在磁盘以只写的方式打开/创建一个名为 articles 的txt文件
    for title in titles:
        file.write(title.string+'\n')
        file.write("http://www.jianshu.com" + title.get('href')+'\n\n')

结果:

2、爬取知乎网站的美女图片链接,并保存到本地

代码语言:javascript
复制
from urllib import request
from  bs4 import BeautifulSoup
import re
import time

url = "https://www.zhihu.com/question/22918070"
html = request.urlopen(url).read().decode('utf-8')
soup = BeautifulSoup(html,'html.parser')
#print(soup.prettify())

#用Beautiful Soup结合正则表达式来提取包含所有图片链接(img标签中,class=**,以.jpg结尾的链接)的语句
links = soup.find_all('img', "origin_image zh-lightbox-thumb",src=re.compile(r'.jpg$'))
print(links)

# 设置保存图片的路径,否则会保存到程序当前路径
path = r'D:\Python\test\images'                            #路径前的r是保持字符串原始值的意思,就是说不对其中的符号进行转义
for link in links:
    print(link.attrs['src'])
    #保存链接并命名,time.time()返回当前时间戳防止命名冲突
    request.urlretrieve(link.attrs['src'],path+'\%s.jpg' % time.time())  #使用request.urlretrieve直接将所有远程链接数据下载到本地

结果:

三、学习总结

     大概学习了下通过urllib和Beautiful Soup 进行简单数据爬取的流程,但是那只适用于一些简单的、数据量比较小的爬虫项目,如果需要爬取的数据量比较大的话,之前的方法必定非常缓慢,而且还可能遇到大规模爬虫IP被网站封禁的情况,因为好的网站会有反爬虫策略。多线程和分布式爬虫、

IP代理、处理验证码、模拟登陆、内置浏览器引擎爬虫,还有注意配合反爬虫措施比较少的移动APP端抓取(抓包工具Fiddler)等等问题。

      考虑成熟框架Scrapy,Scrapy 百度百科

四、参考资料

1、Python3 爬虫学习笔记

2、Python3 教程|菜鸟教程

3、PyCharm最新2017激活码

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python3 爬虫快速入门攻略
  • 一、什么是网络爬虫?
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档