找回密码
 会员注册
查看: 33|回复: 0

Python爬虫入门(一):从零开始学爬虫「详细介绍」

[复制链接]

4

主题

0

回帖

13

积分

新手上路

积分
13
发表于 2024-9-8 18:14:48 | 显示全部楼层 |阅读模式
Python爬虫入门(一):从零开始学爬虫「详细介绍」前言1.爬虫概念1.1什么是爬虫?1.2爬虫的工作原理2.HTTP简述2.1什么是HTTP?2.2HTTP请求2.3HTTP响应2.4常见的HTTP方法3.网页的组成3.1HTML3.2CSS3.3JavaScript4.使用Python进行Web爬虫4.1常用的Python库4.2安装所需库4.3编写一个简单的爬虫4.4示例代码5.处理复杂的网页5.1使用Playwright示例6.编写一个完整的爬虫项目6.1项目要求6.2项目步骤6.3示例代码7.robots.txt文件是什么?8.注意事项总结前言欢迎来到“Python爬虫入门”系列的第一篇文章。你有没有想过,怎么能从网页上自动抓取你需要的数据?比如,一次性下载所有喜欢的图片,或者获取最新的新闻资讯。其实,这就是网络爬虫能做的事情。Python是一门非常受欢迎的编程语言,简单易学,而且有很多强大的库可以用来编写网络爬虫。即使你是编程新手,也不用担心,这个系列会从最基础的知识讲起,带你一步步掌握写爬虫的技能。在这篇文章里,我们会先聊聊什么是网络爬虫,它是怎么工作的,然后教你如何安装和配置开发环境、如何使用Python编写爬虫脚本。1.爬虫概念1.1什么是爬虫?网络爬虫,也称为网络蜘蛛、网络机器人,是一种自动化脚本或程序,用于自动浏览互联网并收集数据。爬虫可以帮助我们从网页中提取信息,从而实现数据采集、信息检索、网站分析等功能。1.2爬虫的工作原理发送请求:爬虫向目标网站发送HTTP请求。获取响应:目标网站返回HTTP响应,包含请求的网页内容。解析数据:爬虫解析网页内容,提取所需数据。存储数据:将提取的数据存储在本地或数据库中。2.HTTP简述2.1什么是HTTP?HTTP(HyperTextTransferProtocol)是用于在Web浏览器和Web服务器之间传递信息的协议。它是一种基于请求-响应模式的协议,客户端发送请求,服务器返回响应。2.2HTTP请求HTTP请求由以下几个部分组成:请求行:包括请求方法(如GET、POST)、请求URL和HTTP版本。请求头:包含有关客户端环境的信息和请求体的元数据。请求体:在POST请求中,包含要发送到服务器的数据。2.3HTTP响应HTTP响应由以下几个部分组成:状态行:包括HTTP版本、状态码和状态描述。响应头:包含有关服务器环境的信息和响应体的元数据。响应体:包含实际的响应内容,如HTML文档、图像或其他数据。2.4常见的HTTP方法GET:请求指定的资源。一般用于请求数据。POST:向指定的资源提交数据进行处理。PUT:向指定资源位置上传最新内容。DELETE:请求删除指定的资源。HEAD:类似于GET,但只返回响应头,不返回响应体。3.网页的组成一个典型的网页由以下几个部分组成:3.1HTMLHTML(HyperTextMarkupLanguage)是用于创建和结构化网页内容的标准标记语言。HTML使用标签来标记不同类型的内容,如文本、图像、链接等。HTML基础结构示例如下: Hello,World! Welcometomywebsite.1234567891011123.2CSSCSS(CascadingStyleSheets)是一种样式表语言,用于描述HTML文档的外观和格式。CSS可以控制网页的布局、颜色、字体等。CSS示例如下:body{font-family:Arial,sans-serif;}h1{color:blue;}p{font-size:16px;}12345678910113.3JavaScriptJavaScript是一种高效的编程语言,通常用于网页开发,可以使网页具有动态交互功能。JavaScript可以操作HTML和CSS,响应用户事件,创建动态效果等。JavaScript示例如下:document.addEventListener('DOMContentLoaded',function(){constbutton=document.getElementById('myButton');button.addEventListener('click',function(){alert('Buttonclicked!');});});1234564.使用Python进行Web爬虫4.1常用的Python库requests:用于发送HTTP请求。BeautifulSoup:用于解析HTML和XML文档。Scrapy:一个功能强大的爬虫框架。Playwright:用于模拟浏览器操作,支持多种浏览器。4.2安装所需库使用pip安装下列库:pipinstallrequestspipinstallbeautifulsoup4pipinstallscrapypipinstallopenpyxlpipinstallplaywrightpython-mplaywrightinstall1234564.3编写一个简单的爬虫下面是一个使用requests编写的简单爬虫示例。4.4示例代码importrequests#发送请求url='https://www.zhihu.com/api/v3/feed/topstory/hot-lists/total'response=requests.get(url)#解析JSON数据data=response.json()if'data'indata:#遍历数据foritemindata['data']:if'target'initemand'title'initem['target']:print(item['target']['title'])else:print("没有获取到数据")123456789101112131415执行结果如下:5.处理复杂的网页对于一些动态加载内容的网页,仅靠requests和BeautifulSoup可能无法获取所有数据。这时可以使用Playwright模拟浏览器操作。5.1使用Playwright示例importasynciofrombs4importBeautifulSoupfromplaywright.async_apiimportasync_playwrightasyncdefrun(playwright:async_playwright)->None:browser=awaitplaywright.chromium.launch(headless=False)context=awaitbrowser.new_context()page=awaitcontext.new_page()#访问网页awaitpage.goto('https://nba.hupu.com/')#获取页面内容content=awaitpage.content()#解析HTML(同样使用BeautifulSoup)soup=BeautifulSoup(content,'html.parser')#提取页面title=soup.title.stringprint('Title:',title)#提取推荐文章的及链接links=awaitpage.locator('.list-recommenda,.list-containera').all()forlinkinlinks:title=awaitlink.inner_text()href=awaitlink.get_attribute('href')print(title,href)#关闭浏览器和上下文awaitcontext.close()awaitbrowser.close()#异步运行函数asyncdefmain():asyncwithasync_playwright()asplaywright:awaitrun(playwright)#运行主函数asyncio.run(main())12345678910111213141516171819202122232425262728293031323334353637383940416.编写一个完整的爬虫项目下面,我们将编写一个完整的爬虫项目,从一个网站中提取数据并保存到本地文件。6.1项目要求从一个演出票务网站中提取演出信息;将演出数据保存到Excel文件中。6.2项目步骤发送请求并获取响应解析响应内容创建Excel工作簿、Sheet将遍历数据保存到Excel文件6.3示例代码下面是一个使用requests和BeautifulSoup编写的爬虫示例。importrequestsfrombs4importBeautifulSoupfromopenpyxlimportWorkbookfrompathlibimportPathdefshowStart(city_code):#发送请求获取网页内容url=f'https://www.showstart.com/event/list?pageNo=1&pageSize=99999&cityCode={city_code}'response=requests.get(url)ifresponse.status_code==200:soup=BeautifulSoup(response.text,'html.parser')items=soup.find_all('a',class_='show-itemitem')#创建Excel工作簿wb=Workbook()sheet=wb.active#添加行sheet.append(['','艺人','价格','时间','地址','链接'])foriteminitems:title=item.find('div',class_='title').text.strip()artist=item.find('div',class_='artist').text.strip()price=item.find('div',class_='price').text.strip()time=item.find('div',class_='time').text.strip()addr=item.find('div',class_='addr').text.strip()href='https://www.showstart.com'+item['href']#将数据写入Excelsheet.append([title,artist,price,time,addr,href])#保存Excel文件root_dir=Path(__file__).resolve().parentfile_path=root_dir/f'showstart_{city_code}.xlsx'wb.save(file_path)print(f'数据已保存到{file_path}')else:print(f'请求失败,状态码:{response.status_code}')if__name__=="__main__":city_code=input("请输入城市编码:")showStart(city_code)12345678910111213141516171819202122232425262728293031323334353637383940414243打开Excel文件,内容如下:7.robots.txt文件是什么?robots.txt文件是一个文本文件,通常放置在网站的根目录下。它用来告诉搜索引擎的爬虫(spider)哪些页面可以抓取,哪些页面不可以抓取。要找到网站的robots.txt文件,在浏览器的地址栏输入以下格式的URL:http://www.xxx.com/robots.txt如果访问的是不带www的域名:http://xxx.com/robots.txt这里的xxx.com替换成想要查找robots.txt的网站域名。如果该网站有robots.txt文件,将能够直接在浏览器中看到它的内容。如果不存在,可能会看到404错误页面或者其他错误信息。此外,有些网站可能会使用robots.txt文件来提供关于网站地图(sitemap)的信息,这可以帮助搜索引擎更快地发现和索引网站上的新内容。8.注意事项尊重网站的robots.txt文件:大多数网站都有一个robots.txt文件,告知爬虫哪些页面可以抓取,哪些页面不可以。一定要遵守这些规则,避免抓取被禁止的内容。避免过度抓取:频繁的请求可能会给目标网站的服务器带来负担,甚至导致服务器宕机。请合理设置抓取的频率,避免对服务器造成过大的压力;尊重网站的使用条款:有些网站的使用条款中明确禁止未经授权的数据抓取。在抓取数据前,一定要仔细阅读并遵守网站的使用条款和隐私政策。处理敏感数据:在抓取和处理数据时,要特别注意保护个人隐私和敏感信息。避免抓取和存储敏感数据,确保数据的合法性和安全性。合法合规:在进行数据抓取时,要确保自己的行为合法合规。不同国家和地区对数据抓取的法律规定不同,务必了解并遵守相关法律法规。正确识别身份:在请求头中使用合理的User-Agent,明确表明自己的身份,避免被误认为恶意爬虫。总结希望你通过本文,对Python爬虫有了一个全面的了解。我们从Python爬虫的基本概念、HTTP基础知识以及网页的基本组成部分讲起,逐步学习了如何使用Python编写简单的爬虫,以及如何处理动态加载内容的网页。最后,我们用一个完整的爬虫项目,把学到的知识都串联起来,实战演练了一遍。相信通过这次学习,你对爬虫的工作流程和技术细节都有了更深入的理解。如果你有任何问题或者好的想法,欢迎随时和我交流。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-10 14:14 , Processed in 0.468905 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表