Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python爬虫入门代码案列

Python爬虫入门代码案列

作者头像
Tommonkey
发布于 2023-02-25 09:30:45
发布于 2023-02-25 09:30:45
97300
代码可运行
举报
文章被收录于专栏:TommonkeyTommonkey
运行总次数:0
代码可运行

Python爬虫入门代码案例

简介

什么是爬虫:爬虫又可以叫网络机器人,是模拟用户上网行为去爬去别人网站上的内容的一种程序或脚本。

爬虫的分类

  • 通用爬虫:抓取系统重要组成部分,抓取的是一整张页面的内容。
  • 聚焦爬虫:建立在通用爬虫的基础之上,抓取的是页面中的特定的局部内容。
  • 增量爬虫:检测网站中的数据更新情况,只会抓取网站中的最新更新出来的数据。

反爬机制:通过指定相关的策略和技术来阻止恶意的爬虫程序对网站的数爬取。

反反爬机制:爬虫程序通过相关的策略和技术来破解获知绕过目标网站的反扒机制。

robots.txt协议:规定了网站中那些数据可以爬取,那些不可以爬取,被称为君子协议,因为他只是规定了,但遵不遵守全看自觉!

爬虫基本流程

  • 指定url
  • 发起请求
  • 获取响应数据
  • 持久化存储

需要提前掌握的知识

  • python模块:requests模块
  • python模块:os模块
  • python模块:json模块
  • xpath解析方式
  • 正则表达式

简单代码案例分析

1.简单爬取搜狗整张页面并存储到本地

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests

# example-1:入门
# if __name__ == "__main__":
#     # step1:指定url
#     url1 = 'https://sogou.com/'
#     # step2:发起请求
#     response = requests.get(url=url1)
#     # step3:获取响应数据
#     page_content = response.text
#     print(page_content)
#     # step4:持久化存储
#     with open('./content.html','w',encoding='utf-8') as store:
#         store.write(page_content)
#     print("The task is complete!")

2.制作简单网页采集器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# example-2:简易的网页采集器,以搜狗为列。
#import requests
# if __name__ == "__main__":
#     url1 = 'https://sogou.com/web'
#     keywd = input("Please input your keyword:")
#     # UA 伪装
#     header1 ={
#         'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'
#     }
#     # url携带的查询参数,封装到字典中
#     param1 ={
#         'query':keywd
#     }
#     # 发送请求
#     response = requests.get(url1,params=param1,headers=header1)
#     page_content = response.text
#     filename = keywd+'.html'
#     print("filename is {}".format(filename))
#     with open(filename,'w',encoding='utf=8') as store:
#         store.write(page_content)
#     print("The task is complete!")

3.爬取百度翻译搜索结果内容,观察页面可知其采用了局部刷新ajax,并采用post发送

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# example-3:百度翻译爬取,注意此次为post请求。
# import json
#import requests
# if __name__ == '__main__':
#     url1 = "https://fanyi.baidu.com/sug"  # 确保自己想查询的网址是正确的
#     header1 = {
#         'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'
#     }
#     info = input('Please input your word:')
#     data1 = {
#         'kw': info
#     }
#     response = requests.post(url=url1, data=data1, headers=header1)
#     dict_obj = response.json()  # 将响应包中的json格式内容赋值给dict_obj
#     filename = info+'.json'
#     fp = open(filename,'w',encoding='utf-8')
#     json.dump(dict_obj,fp=fp,ensure_ascii=False,indent=4)  # 将dict_obj以json的格式存储到fanyi.json文件中,同时ensure_ascii设置为false。
#     print('Translation complete!')

4.爬取豆瓣电影名单

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# example-4:豆瓣电影
# import json
#import requests
# if __name__ == "__main__":
#     url1 = "https://movie.douban.com/j/search_subjects"
#     # param1的参数可以改成用户输入来决定
#     param1 ={
#         'type': 'movie',
#         'tag': '热门',
#         'sort': 'recommend',
#         'page_limit': '20',
#         'page_start': '0',
#     }
#     heard1 ={
#         'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'
#     }
#     response = requests.get(url=url1,params=param1,headers=heard1)
#     dic_obj = response.json()
#     info = input("Please take a filename:")
#     filename = info+'.json'
#     fp = open(filename,'w',encoding='utf-8')
#     json.dump(dic_obj,fp=fp,ensure_ascii=False,indent=4)
#     print("The task is complete!")

进阶代码案列分析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests

# example-1:简单爬取网站图片
# if __name__ == "__main__":
#     url1 = "https://www.tommonkey.cn/img/ctfhub_rce/rce_1/1-1.PNG"
#     data_pic = requests.get(url=url1).content  # 图片是二进制,所以用content
#     with open('./picture.jpg','wb') as fb:
#         fb.write(data_pic)
#     print("Task is complete!")




# example-2:爬取https://www.qiushibaike.com/imgrank/,使用正则表达式截取页面特定的内容
# import re
# import os
# if __name__ == "__main__":
#     if not os.path.exists("./picture"):
#         os.mkdir("./picture")
#
#     url1 = "https://www.qiushibaike.com/imgrank/page/"
#     heared1 ={
#         'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'
#     }
#     match_pic = '<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>'  # 正则表达式匹配img的url地址部分
#
#     for i in range(1,2):  # 选择下载的页数
#         new_url = url1+"{}/".format(i)
#         data_pic = requests.get(url=new_url, headers=heared1).text
#         data_pic_list = re.findall(match_pic,data_pic,re.S)
#         print("正在下载第{}页图片内容!".format(i))
#
#         n = 1
#         for p in data_pic_list:
#             pic_url = "https:"+p
#             download_pic = requests.get(url=pic_url,headers=heared1).content
#             filename = p.split("/")[-1]
#             path = "./picture/"+filename
#             with open(path,'wb') as fd:
#                 fd.write(download_pic)
#             print("第{}张图片以下载完成!".format(n))
#             n = n+1
#         print("第{}页内容下载完成.......".format(i))
#     print("The task is complete!")





# example-3:xpath解析实列,58同城爬取二手房名字信息。
# from lxml import etree
# if __name__ == "__main__":
#     url1 = "https://hf.58.com/ershoufang/p1/"
#     header1 ={
#         'User-agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
#     }
#     response_page = requests.get(url=url1,headers=header1).text
#     obj_page = etree.HTML(response_page)
#     tag_content = obj_page.xpath('//div[@class="property-content-title"]/h3/text()')
#     print(tag_content)
#     fd = open('./info.txt',"w",encoding="utf-8")
#     for n in tag_content:
#         fd.write(n+"\n")
#     print("over!")






# example-4:爬取www.bing.com的图片.
# import os
# from lxml import etree
# if __name__ == "__main__":
#     if not os.path.exists("./picture_down"):
#         os.mkdir("./picture_down")
#     url1 = "https://cn.bing.com/images/search?"
#     # 这里的参数param1可以修改,以此来获取更多的页请求
#     param1 ={
#         "q":"机甲",
#         "first":"1",
#         "tsc":"ImageBasicHover"
#     }
#     header1 ={
#         "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
#     }
#     content = requests.get(url=url1,params=param1,headers=header1).text  # 请求html页面
#     obj_content = etree.HTML(content)
#     pic_content = obj_content.xpath('//div[@id="mmComponent_images_1"]/ul/li//a[@class="iusc"]/@href')  # 是以列表的形式返回
#     pic_name = obj_content.xpath('//div[@id="mmComponent_images_1"]/ul/li//a[@class="iusc"]/@h')   # 是以列表的形式返回
#     num = 0
#     for i in pic_content:
#         pic_name_fix = pic_name[num].split(".")[-2]
#         path_name = "./picture_down/" + pic_name_fix+".jpg"  # 图片完整的保存路径,通过num来取出名字
#         #fd = open(path_name,"wb")
#         new_url = "https://cn.bing.com"+i  # 拼接成图片的url地址
#         down_pic = requests.get(url=new_url, headers=header1).content  # 以二进制请求响应并赋值给down_pic
#         with open(path_name,"wb") as fd:
#             fd.write(down_pic)
#         num = num+1
#         print("第{}张下载完成!".format(num))
# 
#     print("The task is complete!")
#     # 这里只做了一页的循环遍历下载,如果要下载很多页,只需要在此基础上在添加一个外部for循环并修改param1的参数即可
最后一个example-4通过爬虫下载下来的图片,不能正常打开,暂时没找到原因。待解决。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python爬虫入门教程 2-100 妹子图网站爬取
从今天开始就要撸起袖子,直接写Python爬虫了,学习语言最好的办法就是有目的的进行,所以,接下来我将用10+篇的博客,写爬图片这一件事情。希望可以做好。
梦想橡皮擦
2019/01/21
1.8K0
Python爬虫入门教程 2-100 妹子图网站爬取
爬虫实例四:美女壁纸网站
接下来,我们需要看一下这个页面的源代码进行进一步的分析。(可以选择右击检查或者使用快捷键Ctrl+Shift+I)
远方的星
2021/02/26
1.9K0
爬虫实例四:美女壁纸网站
【Python爬虫】尺度太大了!爬一个专门看小姐姐的网站,写一段紧张刺激的代码(附源码)
今天我们通过Python爬取小姐姐图片网站上的美图,零基础学会通用爬虫,当然我们还可以实现多线程爬虫,加快爬虫速度
松鼠爱吃饼干
2021/10/14
3.3K0
python爬虫实例
参考: https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/#find-all
cuijianzhe
2022/06/14
7020
python爬虫实例
【Python爬虫五十个小案例】Python提取某斗颜值主播图片~
文章链接:https://cloud.tencent.com/developer/article/2474762
小馒头学Python
2024/12/08
3490
【Python爬虫五十个小案例】Python提取某斗颜值主播图片~
【Python爬虫五十个小案例】爬取中国天气网城市天气
文章链接:https://cloud.tencent.com/developer/article/2472928
小馒头学Python
2024/12/02
2.9K0
【Python爬虫五十个小案例】爬取中国天气网城市天气
爬虫篇| 爬取百度图片(一)
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。(来源:百度百科)
润森
2019/09/02
5.6K1
爬虫篇| 爬取百度图片(一)
【学习笔记】Python爬虫
URL由协议、主机名、端口、路径、参数、锚点 URLError\HTTPError 后者时前者的子类 用try-except捕获异常
Livinfly
2022/10/26
2.2K0
初步入门爬虫
首先要import requests库,在终端terminal中输入pip install requests即可安装。
y191024
2022/09/20
2280
Python爬虫(全)
里面的parse方法,这个方法有两个作用 1.负责解析start_url下载的Response 对象,根据item提取数据(解析item数据的前提是parse里全部requests请求都被加入了爬取队列) 2.如果有新的url则加入爬取队列,负责进一步处理,URL的Request 对象 这两点简单来说就是编写爬虫的主要部分
yuanshuai
2022/08/22
13.3K0
Python爬虫(全)
如何和女生聊天不尬聊_女孩说和我聊天是尬聊
写这篇文章的灵感来源于之前和朋友的聊天,真的无力吐槽了,想发适合的表情包怼回去却发现收藏的表情包就那几个,就想着是不是可以爬取一些表情包,再也不用尬聊了。
全栈程序员站长
2022/09/30
3650
如何和女生聊天不尬聊_女孩说和我聊天是尬聊
爬虫案例
一、壁纸网站 # coding=utf-8 """ 作者:gaojs 功能: 新增功能: 日期:2022/3/25 19:35 """ import os.path import requests import parsel def get_address(): """ 获取url地址 :return: """ dirname = 'photo/' if not os.path.exists(dirname):
懿曲折扇情
2022/08/24
1.2K0
Python3爬虫模拟登录爬取百度图片
pycharm,python3.7,selenium库,request库,os文件库,re模块的正则表达式运用,自行下载chromedriver自测软件
HcodeBlogger
2020/07/14
6900
python爬虫—–request模块学习及案例
python3中: str 使用encode方法转化为 bytes bytes通过decode转化为str
全栈程序员站长
2021/04/19
3690
python爬虫—–request模块学习及案例
Python爬虫设置代理
在写爬虫爬取github数据的时候,国内的ip不是非常稳定,在测试的时候容易down掉,因此需要设置代理。本片就如何在Python爬虫中设置代理展开介绍。
花猪
2022/02/22
1.3K0
Python爬虫设置代理
爬虫入门基础
网络爬虫(Web Crawler),也称为网页蜘蛛或网络机器人,是一种自动化浏览网络页面的程序。它们按照一定的规则,通过HTTP/HTTPS等协议访问互联网上的网页,并从中提取所需的信息。
用户11397231
2024/12/10
5810
爬虫入门基础
python爬虫-数据解析(bs4)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100110.html原文链接:
全栈程序员站长
2021/04/19
1.1K0
python爬虫-数据解析(bs4)
python爬虫–异步
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100100.html原文链接:
全栈程序员站长
2021/04/19
7440
python爬虫–异步
Python代理IP爬虫的新手使用教程
Python爬虫要经历爬虫、爬虫被限制、爬虫反限制的过程。当然后续还要网页爬虫限制优化,爬虫再反限制的一系列道高一尺魔高一丈的过程。爬虫的初级阶段,添加headers和ip代理可以解决很多问题。
用户7081581
2020/03/19
1.3K0
爬虫案例-实现翻译功能
随着我们不断地深入学习,手上的资料已经满足不了我们的时候,我们就需要在发达的网络里寻找帮助,而爬虫就是帮我们在网络众多信息中筛选出我们所需要的。
天寒雨落
2022/11/20
3380
爬虫案例-实现翻译功能
相关推荐
Python爬虫入门教程 2-100 妹子图网站爬取
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验