简介:今天,首席执行官指出,与您分享Python Crawler一次可以攀登相关内容的多少。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
一个借口数万个数据,但只有十片Data_n 10,000爬行动物练习的食谱数据
2020-12-03 06:37:24
Weixin_39990029
代码年龄5岁
专注于
BE22F93FC7BBC7CBDD62166579A1FD22.PNG
XX线代码爬行10,000种食谱数据用于爬行动物练习
什么是爬行者
Care:也称为网络蜘蛛,它是一个程序,可以自动捕获Internet信息以获取对我们从Internet有价值的信息。
单击此处了解有关Python爬行动物简介
如何合法爬行
不允许一些网站限制攀登的内容,或者可以通过访问网站上的robots.txt文件获得网站上的爬行动物协议。
以Douban.com为例
访问此URL(),您可以了解到Dielan的爬行动物协议如下
1FE03008A45085DC6DA4978543E75C.PNG
可以看出,Douban对不同访客有不同的访问限制。其中,Douban不允许访问Wandoujia Spider的用户名。
我使用的食谱网站是无限的爬网,因此爬网是合法的。
E4025D9F5D8B96388EFA942E02555D1F9.PNG
特征
不断10,000个网页
介绍第三方库
导入请求#send请求
导入RE #Re #Remular表达式,用于提取网页数据
导入获胜#Reminder程序运行结束
导入时间#calculing程序运行时间
如果未安装这些第三方库,则可以在命令提示符下输入以下代码以下载
PIP安装请求,RE,WINSOUND,时间
爬行者的三个步骤
获取所有网页的网站爬网
在Web内容中提取有用的信息
信息导出
每个步骤都对应一个函数
步骤_1获取所有网页的网站要爬行
首先,我们打开URL并检查其源代码
00EB8B89C9BF17460BCA4D47F017BAB.PNG
365621D25C80F9283485350C083A545.PNG
Web源代码
观察发现与每道菜相对应的网站在此目录中
9D729B843DF3A746D70EA7AF31A1D962.PNG
获取带有正则表达式的URL,在列表中写入
由于每个网页只有十种菜肴,因此单击下一页
D342D8422E16C48C9600A45A6D1C9.PNG
您最多可以看到1000页,这意味着10,000盘
fb279b42fcdd3cecf7cda79ba4a8ae53.png
使用周期将与菜肴的每一页相对应的网络写入列表。每次写作时,都会写一行列表。多次之后,您形成了两个维度列表。中间显示如下:
31E3755DC8B45EC6F4DAC3C3C05F261539.PNG
代码显示如下
all_url = []#创建一个存储网页地址的数组
def get_all_url(n):#这个功能用于获取网页上的所有菜肴网站
如果(n == 1):
url =“”
别的:
url =''%n#%s等于c语言中的%s,这意味着格式化对象为字符,而%d代表将对象格式化为整数
标题= {“用户代理”:“ Mozilla/5.0(Windows NT 10.0; Win64; X64)
AppleWebkit/537.36(Khtml,像Gecko)Chrome/80.0.3987.122 Safari/537.36“}”}
响应= requests.get(url,标题=标题)#网
wendmes.encoding =“ utf-8”#设置接收编码格式
模式= re.compile(r'a target =“ _ blank” href =“ https://www.shouxicto.com/article/article//za-z--z>://.re.s)
#xtract网页中的URL,re.s表示整个文本是匹配的。如果您不添加RE.S,它将仅在一行中匹配
结果=模式.findall(wendys.text)获得的网页结果存储在结果中
all_url.append(结果[0:10])#由于每个页面只有十道菜,只有前十种与菜肴的网站相对应,因此我们只添加前十个。
返回all_url#as返回值返回此列表
标题的说明
当使用Python爬网爬网数据时,通常会在网站上遇到一些反爬行者,通常是针对标题中的用户代理。如果标题上没有设置,则用户代理会声明他是一个python脚本,Andif网站具有反crawler的想法,它将不可避免地拒绝此连接。修改标头可以将您的reptile插入到正常的访问中要浏览器以避免此问题。在这里单击以了解详细信息
编码格式UTF-8的说明
UTF-8可以编码中文,大多数Python编译器是UTF-8的默认编码方法,请单击此处以了解详细信息
步骤_2在网页中提取有用的信息
打开菜的网站,检查源代码,查找我们需要的信息,然后使用正则表达式获得。该过程与以前的函数相同,获得了URL
主要补充信息在这里
C0DDFD3110775BB8B71759F6927F26D4.PNG
这里的功能信息(包括练习和口味)
38C99C1A51137DEBCAFE38AE3122E19A.PNG
def get_info(resp,输出):
name_pattern = re.com(r'h1(。*)/h1')#正则表达式获取菜肴名称信息
food_pattern = re.compile(r的class =“ t”(。*)/spanspan class =“ a”(。*)/span/div')#正则表达式
fixing_pattern = re.com(r'div class =“ c_mtr_li” span class =“ t1”(。*)/spanspan class =“ a”(。
fearture1_pattern = re.com(r'div class =“ cpargs cpargs2” div class =“ i”/div(。)/div')##
fearture2_pattern = re.com(r'div class =“ cpargs cpargs3” div class =“ i”/div(。*)/div')#正则表达式
name = name_pattern.findall(resp.text)#提取菜肴名称信息
food = food_pattern.findall(resp.text)#提取主要成分信息
fixing = fixing_pattern.findall(resp.text)#stract无访问信息
fearture1 = fearture1_pattern.findall(resp.text)#tract feature_1
fearture2 = fearture2_pattern.findall(resp.text)#tract feature_2
output.write(str(name))#o o o o o o o o o o o o o o o o o o o o o。写功能不能写入int类型参数,因此请使用str()进行转换
output.write('t')#进入下一个单元格
output.write(str(fearture1))#将功能_1放在输出文件
output.write('t')#进入下一个单元格
output.write(str(fearture2))#put feature_2写入输出文件
output.write('t')#进入下一个单元格
对于我的范围(len(食物)):
对于J范围(len(食物[i]):)::):
output.write(str(food [i] [j])#
output.write('t')
如果(Len(食物)11):
output.write('t'*2*(11-len(food))#)#每道菜的主要成分不同,代码可以对齐表内容
对于我的范围(len(fixing)):
对于J范围(len(fix fix [i]):)::):
output.write(str(修复[i] [j])#
output.write('t')
output.write('n')#
步骤_3信息导出
Def Spider():
output = open('e:programingpython sucai_2.xls','w',encoding ='utf-8')#创建一个excel文件,编码格式为utf-8
output.write('名称t方法t特别t o')#写入标题栏
output.write('t'*22)#对齐内容
output.write
对于我的范围(len(all_url)):
对于J中的J(len(all_url [i])):
url2 = all_url [i] [j]
响应= requests.get(url2)#逐个访问网页以获取数据
wendmes.encoding =“ utf-8”#设置接收编码格式
get_info(响应,输出)#处理数据,提取信息
output.close()#close文件
主功能
time_start = time.time(time()#record程序开始时间
对于我的范围(1,2):#f f f f f f f f f f f f f
get_all_url(i)
Spider()#for提取和导出
持续时间= 1000#及时声音持续时间,1000毫秒= 1秒
freq = 440 #prompt音频
time_end = time.time(Time()#record程序结束时间
打印('完全成本',time_end time_start)#print程序运行时间
winsound.beep(freq,持续时间*10)#w w提示程序结束
实验后,爬网大约需要3453秒
E8B6C8637980D2AEF9587711C7084A5F.png
最后一个数据如下
97A8662CF048844850658AEF841E04C3.PNG
写在后面
我是C语言的80岁的小白色。我依靠一定程度和一首歌来争取该节目。在代码风格和写作方面,有不可避免的地方。与我交流并批评我很多。
Python爬行动物可以爬行很多东西。Python爬虫如何学习?简单分析:
如果您仔细观察到它,就不难发现越来越多的人理解爬行和学习爬行者。一方面,可以在Internet上获得越来越多的数据。另一方面,越来越多的编程语言(例如Python)提供越来越多的编程语言。脱离工具使爬网简单易于启动。
使用爬行者获取大量价值数据,以获取在感知理解中无法获得的信息,例如:
Zhihu:在各种主题下攀登高质量的答案并筛选最高质量的内容。
TAOBAO和JD:掌握商品,评论和销售数据,以分析各种产品和用户的消费方案。
Anjuke,Chain Home:掌握房地产的销售和租赁信息,分析房价变化的趋势,并分析不同地区的住房价格。
Logou.com和Zhilian:攀登各种职位的信息,以分析各个行业的人才和薪水需求。
雪球网络:掌握雪球高回报使用者的行为,并分析和预测股票市场。
Causter是开始使用Python的最佳方法。代码可以实现基本的爬网。对更大的成就感。
掌握了基本爬虫后,您将学习Python数据分析,Web开发甚至机器学习。因为在此过程中,您非常熟悉基本的语法,库以及如何查找文档。
对于Xiaobai来说,爬行者可能是一个非常复杂且技术较高的阈值。例如,有些人认为学习爬行者必须精通Python,然后嗡嗡作响,然后嗡嗡作响,以学习Python的每个知识点。很长一段时间后,他们发现自己仍然无法攀登数据。有人认为他们必须先掌握网页的知识,然后启动htmlcss,然后输入结果。
但是,掌握正确的方法和可以在短时间内爬网的数据的数据实际上很容易实现,但是建议您从一开始就有一个特定的目标。
在目标的驱动下,您的学习将更加准确,更有效。您认为您认为可以在完成目标的过程中学习的所有预识。这里是平稳,零基础学习路径。
1.学习python软件包并实现基本的爬网处理
2.了解非结构数据的存储
3.学习砂纸并建造工程爬网
4.学习数据库知识,应对大型数据存储和提取
5.掌握各种技术,并在特殊网站上处理反获取措施
6.分布式爬行动物以实现大规模并发收集,提高效率
一
学习Python软件包并实现基本的爬网处理
大多数爬行动物是通过“发送请求 - 启用页面-Parsing Page -Drawing和Storage Content”的过程执行的。这实际上是在模拟使用我们的浏览器获取Web信息的过程。
Python中有许多相关的软件包:Urllib,请求,BS4,Scrapy,Pyspider等。建议从请求+XPATH开始。请求负责连接网站并返回网页。XPath用于分析网页和易于绘制的数据。
如果您使用了BeautifulSoup,您会发现XPath必须节省很多麻烦。通过按层检查元素代码层的工作。这样,基本例程是相似的。通常,平均静态网站根本不是。Douban,百科全书,腾讯新闻等基本上可以开始。
当然,如果您需要爬异步加载网站,则可以学习浏览器以获取包裹以分析真实请求或学习硒以实现自动化。通过这种方式,也可以解决诸如了解,时间网络和猫鹰之类的动态网站。
二
了解非结构化数据的存储
攀登数据可以直接以文档形式位于文档的形式中,也可以存储在数据库中。
当启动数据数量不大时,您可以通过Python或Pandas的语法将数据保存为CSV等文件。
当然,您可能会发现攀爬数据不干净,可能丢失,错误等。您还需要清洁数据。您可以学习PANDAS软件包的基本用法,以进行数据预处理并获取更清洁的数据。
三
学习纸巾并建造工程爬行者
掌握先前的技术通常没有问题,但是当它非常复杂时,它仍然可能无能为力。目前,强大的废纸框架非常有用。
废品是一个非常强大的爬行动物框架。它不仅可以方便地构建请求,还可以一个强大的选择器来轻松分析响应。
学习纸巾,您可以自己构建一些爬行动物框架,并且基本上有了爬行者工程师的思考。
四个
了解数据库基础并处理大型数据存储
当数据爬行量很小时,您可以以文档的形式存储它。一旦数据量大,这有点不合理。因此,有必要掌握数据库。学习当前的主流猫科动物是可以的。
MongoDB可以帮助您存储一些非结构化数据,例如各种注释文本,图片的链接等。您还可以使用Pymongo更方便地在Python中操作MongoDB。
因为这里要使用的数据库的知识实际上非常简单,主要是如何在仓库中输入数据,如何提取,然后在需要时学习。
五
掌握各种技术,并在特殊网站上处理反获取措施
当然,在爬网过程中有一些绝望,例如被网站阻止,例如各种奇怪的验证代码,Userragent访问限制,各种动态加载等。
当然,在遇到这些反票的方法时,需要一些先进的技能来处理它。常规的访问频率控制,使用代理IP池,抓取软件包,OCR处理验证代码等等。
通常,该网站会偏向于有效开发和反爬行者之间的前者。这也为爬虫提供了空间。掌握这些技术来处理反爬行者,大多数网站对您来说已经不再困难了。
六
分布式爬行动物以实现大规模并收集
基本数据不再是问题,您的瓶颈将集中在爬网的效率上。这次,我相信您自然会与一个非常有力的名称接触:分布式爬行者。
分布式的东西听起来令人恐惧,但实际上是在使用多线程的原理来使多个爬行动物同时起作用。您需要掌握三种废纸 +蒙古 + redis的工具。
我们之前说过的零工,对于基本的页面爬行,MongoDB用于存储数据攀登,Redis用于存储网络队列要爬行,即任务队列。
因此,有些事情看起来令人恐惧,但实际上并非如此。当您可以编写一个分布式轨道器时,您可以尝试创建一些基本的爬行动物体系结构以实现一些更多的自动化数据采集。
您会看到,在学习路径之后,您已经可以成为一个旧驱动程序,非常顺利。因此,一开始,尽量不要系统地进入某些事情,而是找到一个实际的项目(从Douelan和Piggy的简单开始),只是直接开始。
由于爬行者的技术,您无需系统地精通一种语言,也不需要高调数据库技术。有效的姿势是从实际项目中学习这些分散的知识点。您可以保证每次学习时都学会。所有都是最需要的部分。
当然,唯一的麻烦是,在特定问题中,如何找到学习资源的特定部分,如何筛选和屏幕,这是许多初学者面临的一个大问题。
以上是我的答案。我希望这对您有帮助。
我见过那些在3秒内喝了“瓶子”啤酒的人,我看到了一个“杯子”啤酒一个小时。
我见过一个像一巴掌一样的人,在吃面包像大手指一样,我已经见过几天。
————————我是一个可爱的细分线————————————————
回到主题:
爬行动物可以攀爬多少,可以攀爬多少速度。在算法和网络速度上取消。当然,它仍然与工程师自己的力量有关。
#可以在一秒钟内攀登数万个数据,
#一些爬行者只能攀登一天。
印刷“生命很短,Python是一首歌”
结论:以上是首席CTO笔记给所有人提出多少python crawler的全部内容。我希望这对每个人都会有所帮助。如果您仍然想进一步了解这一点,请记住要收集对该网站的关注。