python 爬虫

article/2025/9/7 14:28:01

                                                                          Python 爬虫教程(更新中)

目录

1. 简介

2. 注意

3. xpath+selenium

4. xpath+scarpy(更新中)

5. icrawler 【借助更加便捷操作的pip包】


1. 简介

爬虫主要有2种方式:API(报文)-静态、模拟鼠标点击形式-动态;

Xpath + Scrapy(API 静态 爬取-直接post get)  or  Xpath + selenium(点击 动态 爬取-模拟) 

Xpath风格可以获取所有的内容,所有的网站都是按照 tree 的形式,那么xpath可以逐层(有条理)分析,再结合各个框架进行分析爬取数据;xpath也可以用re beautifulsoup解析,但xpath更好,xpath教程(百度一下很多);

selenium只是点击形式,因此对应很多header参数可不需要,对于不懂互联网底层原理的人也是比较容易上手的,当然前提是你掌握一点html知识即可!而scrapy则需要很多参数进行设置,进行post get分析

xpath一般在浏览器中使用:F12,点击左上角小箭头,查看对应的html标签,然后在console中输入$x('')查看

【记住:如果用小按钮点击不到的,采用右击->检查!!!

进一步,对于异步加载ajax,通过network点击你想要操作的,然后可以看到相应的信息(百度一下F12对应的信息介绍)

对于iframe等内嵌网页,爬虫也是2种方式获取内容:(1)selenium browser.switch_to.frame();(2)BeautifulSoup+requests 先获取当前页的内容,然后获取想要的iframe的链接,再次get-post请求内容进行解析。

2. 注意

(1)断点续爬;(2)代理(淘宝);(3)sleep一段时间继续;。。。

3. xpath+selenium

(1) 百度图片爬虫

'''
注释:@author is leilei百度图片爬虫,采用selenium模拟鼠标点击形式1. 将要搜索的文本表示成list2. 打开百度图片官网,输入文本,搜索3. 逐条下载对应的图片
注:本代码支持断点续爬!
'''import os
import uuid
import time
import random
import urllib
from selenium import webdriver
from selenium.webdriver.common.keys import Keys  # 键盘类def send_param_to_baidu(name, browser):''':param name:    str:param browser: webdriver.Chrome 实际应该是全局变量的:return:        将要输入的 关键字 输入百度图片'''# 采用id进行xpath选择,id一般唯一inputs = browser.find_element_by_xpath('//input[@id="kw"]')inputs.clear()inputs.send_keys(name)time.sleep(1)inputs.send_keys(Keys.ENTER)time.sleep(1)returndef download_baidu_images(save_path, img_num, browser):''' 此函数应在:param save_path: 下载路径 str:param img_num:   下载图片数量 int:param browser:   webdriver.Chrome:return:'''if not os.path.exists(save_path):os.makedirs(save_path)img_link = browser.find_elements_by_xpath('//li/div[@class="imgbox"]/a/img[@class="main_img img-hover"]')img_link[2].click()# 切换窗口windows = browser.window_handlesbrowser.switch_to.window(windows[-1])  # 切换到图像界面time.sleep(random.random())for i in range(img_num):img_link_ = browser.find_element_by_xpath('//div/img[@class="currentImg"]')src_link = img_link_.get_attribute('src')print(src_link)# 保存图片,使用urlibimg_name = uuid.uuid4()urllib.request.urlretrieve(src_link, os.path.join(save_path, str(img_name) + '.jpg'))# 关闭图像界面,并切换到外观界面time.sleep(random.random())# 点击下一张图片browser.find_element_by_xpath('//span[@class="img-next"]').click()time.sleep(random.random())# 关闭当前窗口,并选择之前的窗口browser.close()browser.switch_to.window(windows[0])returndef main(names, save_root, img_num=[1000,], continue_num=0, is_open_chrome=False):''':param names: list str:param save_root: str:param img_num: int list or int:param continue_num: int 断点续爬开始索引:param is_open_chrome: 爬虫是否打开浏览器爬取图像 bool default=False:return:'''options = webdriver.ChromeOptions()# 设置是否打开浏览器if not is_open_chrome:options.add_argument('--headless')  # 不打开浏览器else:prefs = {"profile.managed_default_content_settings.images": 2}  # 禁止图像加载options.add_experimental_option("prefs", prefs)# 欺骗反爬虫,浏览器可以打开,但是没有内容options.add_argument("--disable-blink-features=AutomationControlled")browser = webdriver.Chrome(chrome_options=options)browser.maximize_window()browser.get(r'https://image.baidu.com/')time.sleep(random.random())assert type(names) == list, "names参数必须是字符串列表"assert continue_num <= len(names), "中断续爬点需要小于爬虫任务数量"if type(img_num) == int:img_num = [img_num] * len(names)print(img_num)elif type(img_num) == list:print(img_num)else:print("None, img_num 必须是int list or int")returnfor i in range(continue_num, len(names)):name = names[i]save_path = os.path.join(save_root, str(names.index(name)))  # 以索引作为文件夹名称send_param_to_baidu(name, browser)download_baidu_images(save_path=save_path, img_num=img_num[i], browser=browser)# 全部关闭browser.quit()returnif __name__=="__main__":# main(names=['施工人员穿反光衣', '反光衣',],\#      save_root=r'F:\Reflective_vests',\#      img_num=500)main(names=['森林积雪', '道路积雪', '建筑积雪', '山上积雪', '草原下雪', '小区积雪', '雪人堆', '蓝天白云下的建筑道路积雪'],\save_root=r'F:\DataSets\snow\positive',\img_num=[300, 300, 300, 100, 100, 100, 50, 50],\continue_num=7)

######################################################################

4. xpath+scarpy(更新中)

scrapy有比较严格的格式要求,按照要求来做,即可。

英文最新版本:2.3版本;(尽量去看英文教程)

5. icrawler 【借助更加便捷操作的pip包】

'''底层肯定是scrapy静态报文,谷歌引擎不可以,百度最快,bing速度有点慢!直接pip install icrawlergithub 搜索即可若想搜索多个关键词,可以遍历for循环;同时icrawler也可对图像链接list、txt直接遍历:            UrlListCrawler
'''
from icrawler.builtin import GoogleImageCrawler
from icrawler.builtin import BaiduImageCrawler
from icrawler.builtin import BingImageCrawler
# storage字典格式'root_dir': 保存路径
crawler = BaiduImageCrawler(storage={'root_dir': r'F:\temp\cat'})
crawler.crawl(keyword='cat', max_num=10)


http://chatgpt.dhexx.cn/article/8skQrfIu.shtml

相关文章

【python】python爬虫

爬虫基础 HTTP协议 HTTP是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写&#xff0c;是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议。 HTTP是基于TCP/IP通信协议来传递数据&#xff08;HT…

Python3 网络爬虫(一):初识网络爬虫之夜探老王家(2020年最新版)

一、前言 3年前&#xff0c;我在 csdn 写过 Python3 网络爬虫系列教程&#xff0c;经过三年的积累&#xff0c;累计阅读量近 90W。 同时&#xff0c;我也在 Github 开源了所有 Python3 网络爬虫代码&#xff0c;累积获得 10.3k 的 star&#xff0c;4.1k 的 fork。 可以说&…

Python3 爬虫快速入门攻略

一、什么是网络爬虫&#xff1f; 1、定义&#xff1a;网络爬虫&#xff08;Web Spider&#xff09;&#xff0c;又被称为网页蜘蛛&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取网站信息的程序或者脚本。 2、简介&#xff1a;网络蜘蛛是一个很形象的名字。如果把互…

Python3爬虫(一):Python的入门学习以及Python网络爬虫的初步认识

Author&#xff1a;baiyucraft BLog&#xff1a; baiyucraft’s Home IDE&#xff1a;PyCharm 其实对于Python&#xff0c;一直想去学习&#xff0c;但一直没有足够的的时候去研究&#xff0c;这次趁疫情在家的时间&#xff0c;对于Python好好的研究研究。算是作为自己对于Py…

Python3网络爬虫(一):利用urllib进行简单的网页抓取

运行平台&#xff1a;Windows Python版本&#xff1a;Python3.x IDE&#xff1a;Sublime text3 转载请注明作者和出处&#xff1a;http://blog.csdn.net/c406495762/article/details/58716886 一直想学习Python爬虫的知识&#xff0c;在网上搜索了一下&#xff0c;大部分都是…

python3 爬虫(初试牛刀)

此文章仅供学习交流使用 在学习爬虫之前&#xff0c;把最近对于 VMware 的网络学习做个总结 接下来&#xff0c;步入正题&#xff01; 分析 Robots 协议 禁止所有爬虫访问任何目录的代码&#xff1a; User-agent: * Disallow:/允许所有爬虫访问任何目录的代码&#xff1a; …

Python3爬虫详解

1概述 爬虫在Python中是个实现起来比较简单&#xff0c;关键在于网页的分析和内容的抓取。最近由于个人需要写了些内容&#xff0c;这里总结下爬虫相关的内容。 本文爬虫相关实现没有使用scrapy框架&#xff0c;通过urllib请求、bs4来实现。 2网络请求 网络请求部分用到urlli…

python3爬虫学习

python3爬虫学习 一、爬虫流程&#xff1a; ①先由urllib的request打开Url得到网页html文档 ②浏览器打开网页源代码分析元素节点 ③通过Beautiful Soup或则正则表达式提取想要的数据 ④存储数据到本地磁盘或数据库&#xff08;抓取&#xff0c;分析&#xff0c;存储&…

最通俗、最详细的 Python3 网络爬虫入门指南

很多朋友学习Python都是先从爬虫开始&#xff0c;其原因不外两方面&#xff1a; 其一Python对爬虫支持度较好&#xff0c;类库众多&#xff0c;其二语法简单&#xff0c;入门容易&#xff0c;所以两者形影相随&#xff0c;不离不弃。 要使用python语言做爬虫&#xff0c;首先需…

Maven安装和配置本地仓库和阿里云镜像

maven安装配置换阿里源 1.下载maven 打开maven官网https://maven.apache.org/download.cgi&#xff0c;下载maven安装包&#xff0c;下载完成后解压到你想放的位置&#xff0c;不用安装 2.配置环境变量 3.配置阿里源和repository地址 打开刚才的解压文件conf文件夹下的setting.…

阿里云云效Maven仓库

一、Maven仓库概要 私服的目的&#xff1a;我们有一些自己的公用包&#xff0c;不想拉取工程编译&#xff0c;直接使用已经上传到私服的Jar包&#xff0c;在需要使用的项目工程直接引用使用&#xff0c;加速开发效率和编译效率。 阿里云仓库地址&#xff1a; 公用主仓库&#…

阿里云maven仓库的使用详解以及报错解决方法

仓库介绍 阿里云Maven中央仓库为 阿里云云效 提供的公共代理仓库&#xff0c;帮助研发人员提高研发生产效率&#xff0c;使用阿里云Maven中央仓库作为下载源&#xff0c;速度更快更稳定。阿里云云效是企业级一站式 DevOps 平台&#xff0c;覆盖产品从需求到运营的研发全生命周…

IDEA设置Maven阿里镜像仓库

1.打开IDEA安装目录&#xff0c;并进入如下相对路径 "\IntelliJ IDEA 2022.3.2\plugins\maven\lib\maven3\conf"。 2.打开settings.xml文件&#xff0c;并按照阿里官方指南插入配置项到指定位置。 2.1) 查看官方指南 2.2) 复制配置内容 <mirror><id>al…

IDEA中的maven阿里仓库配置

IDEA中的maven阿里仓库配置 1、进入官网&#xff1a; http://maven.apache.org/download.cgi 下载解压&#xff0c;然后记住解压位置 2、settings.xml配置更改 打开下载的文件 apache-maven-3.6.3 > conf> settings.xml&#xff08;图一为原文件&#xff0c;图二为配置…

gradle配置阿里Maven仓库

使用gradle编译一个开源项目时&#xff0c;发现下载依赖包比较慢,打开项目下的build.gradle文件: 可以看到并没有配置国内Maven仓库&#xff0c;那就配置一个呗,参照Gradle官方文档配置阿里Maven仓库 在build.gradle文件中修改repositories,也就是在mavenLocal()和mavenCentral…

maven配置阿里仓库

大家使用maven下载jar包会很慢&#xff0c;最主要的原因是maven的仓库在英国&#xff0c;但如果使用了阿里的仓库下载jar包就会变得很便捷。下面是如和配置阿里的仓库。 <mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>ali…

maven 配置阿里云仓库

目录 0. 前置工作&#xff1a;安装jdk1. 配置 maven 环境变量2. 配置阿里云镜像仓库3 idea中maven的相关配置 0. 前置工作&#xff1a;安装jdk 参考步骤 1 2 3 1. 配置 maven 环境变量 2. 配置阿里云镜像仓库 对解压后的maven的conf/settings进行编辑 本地仓库中没有的东…

Maven之阿里云镜像仓库配置

Maven 镜像 简介 阿里云Maven中央仓库为阿里云云效提供的公共代理仓库&#xff0c;帮助研发人员提高研发生产效率&#xff0c;使用阿里云Maven中央仓库作为下载源&#xff0c;速度更快更稳定。阿里云云效 是企业级一站式 DevOps 平台&#xff0c;覆盖产品从需求到运营的研发全生…

阿里云Maven仓库

文章目录 一、仓库介绍二、配置指南1. maven 配置指南2. gradle 配置指南 三、国内Maven仓库搜索地址四、Maven-Search插件使用1. 安装2. 使用 一、仓库介绍 阿里云云效 Maven 是什么 阿里云Maven中央仓库为 阿里云云效 提供的公共代理仓库&#xff0c;帮助研发人员提高研发生…

免费无损高品质音乐下载器V3.5

无损音乐下载器&#xff0c;今天朋友推荐给我的测试的一款 win 平台音乐下载软件&#xff0c;支持无损、超品、高品等音质的下载&#xff0c;此外它还支持在线播放 MV。这款软件经过测试还不错&#xff0c;适合喜欢高品质音乐的朋友。当然如果对于音乐品质没有太高要求还是推荐…