唐山seo设计网站,王野天个人简历,商标注册收费标准,常熟经济技术开发区人才网引言
随着互联网的快速发展#xff0c;数据成为了新时代的石油。Python作为一种高效、易学的编程语言#xff0c;在数据采集领域有着广泛的应用。本文将详细讲解Python爬虫的原理、常用库以及实战案例#xff0c;帮助读者掌握爬虫技能。
一、爬虫原理
爬虫#xff0c;又…引言
随着互联网的快速发展数据成为了新时代的石油。Python作为一种高效、易学的编程语言在数据采集领域有着广泛的应用。本文将详细讲解Python爬虫的原理、常用库以及实战案例帮助读者掌握爬虫技能。
一、爬虫原理
爬虫又称网络爬虫是一种自动获取网页内容的程序。它模拟人类浏览网页的行为发送HTTP请求获取网页源代码再通过解析、提取等技术手段获取所需数据。
1. HTTP请求与响应过程
爬虫首先向目标网站发送HTTP请求请求可以包含多种参数如URL、请求方法GET或POST、请求头Headers等。服务器接收到请求后返回相应的HTTP响应包括状态码、响应头和响应体网页内容。
2. 常用爬虫技术
1请求库如requests、aiohttp等用于发送HTTP请求。 2解析库如BeautifulSoup、lxml、PyQuery等用于解析网页内容。 3存储库如pandas、SQLite等用于存储爬取到的数据。 4异步库如asyncio、aiohttp等用于实现异步爬虫提高爬取效率。
Python入门基础教程【文末有惊喜福利】
二、Python爬虫常用库
1. 请求库
1requests简洁、强大的HTTP库支持HTTP连接保持和连接池支持SSL证书验证、Cookies等。 2aiohttp基于asyncio的异步HTTP网络库适用于需要高并发的爬虫场景。
2. 解析库
1BeautifulSoup一个HTML和XML的解析库简单易用支持多种解析器。 2lxml一个高效的XML和HTML解析库支持XPath和CSS选择器。 3PyQuery一个Python版的jQuery语法与jQuery类似易于上手。
3. 存储库
1pandas一个强大的数据分析库提供数据结构和数据分析工具支持多种文件格式。 2SQLite一个轻量级的数据库支持SQL查询适用于小型爬虫项目。
接下来将分享7个Python爬虫的小案例帮助大家更好地学习和了解Python爬虫的基础知识。以下是每个案例的简介和源代码
1. 爬取豆瓣电影Top250
这个案例使用BeautifulSoup库爬取豆瓣电影Top250的电影名称、评分和评价人数等信息并将这些信息保存到CSV文件中。 import requests from bs4 import BeautifulSoup import csv # 请求URL url ‘https://movie.douban.com/top250’ # 请求头部 headers { ‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36’ } # 解析页面函数 def parse_html(html): soup BeautifulSoup(html, ‘lxml’) movie_list soup.find(‘ol’, class_‘grid_view’).find_all(‘li’) for movie in movie_list: title movie.find(‘div’, class_‘hd’).find(‘span’, class_‘title’).get_text() rating_num movie.find(‘div’, class_‘star’).find(‘span’, class_‘rating_num’).get_text() comment_num movie.find(‘div’, class_‘star’).find_all(‘span’)[-1].get_text() writer.writerow([title, rating_num, comment_num]) # 保存数据函数 def save_data(): f open(‘douban_movie_top250.csv’, ‘a’, newline‘’, encoding‘utf-8-sig’) global writer writer csv.writer(f) writer.writerow([‘电影名称’, ‘评分’, ‘评价人数’]) for i in range(10): url ‘https://movie.douban.com/top250start’ str(i*25) ‘filter’ response requests.get(url, headersheaders) parse_html(response.text) f.close() if __name__ ‘__main__’: save_data() 2. 爬取猫眼电影Top100
这个案例使用正则表达式和requests库爬取猫眼电影Top100的电影名称、主演和上映时间等信息并将这些信息保存到TXT文件中。 import requests import re # 请求URL url https://maoyan.com/board/4 # 请求头部 headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 } # 解析页面函数 def parse_html(html): pattern re.compile(p classnamea href.*? title(.*?) data-actboarditem-click data-val{movieId:\\d}(.*?)/a/p.*?p classstar(.*?)/p.*?p classreleasetime(.*?)/p, re.S) items re.findall(pattern, html) for item in items: yield { 电影名称: item[1], 主演: item[2].strip(), 上映时间: item[3] } # 保存数据函数 def save_data(): f open(maoyan_top100.txt, w, encodingutf-8) for i in range(10): url https://maoyan.com/board/4?offset str(i*10) response requests.get(url, headersheaders) for item in parse_html(response.text): f.write(str(item) \ ) f.close() if __name__ __main__: save_data() 3. 爬取全国高校名单
这个案例使用正则表达式和requests库爬取全国高校名单并将这些信息保存到TXT文件中。 import requests import re # 请求URL url http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html # 请求头部 headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 } # 解析页面函数 def parse_html(html): pattern re.compile(tr classalt.*?td(.*?)/td.*?tddiv alignleft.*?a href(.*?) target_blank(.*?)/a/div/td.*?td(.*?)/td.*?td(.*?)/td.*?/tr, re.S) items re.findall(pattern, html) for item in items: yield { 排名: item[0], 学校名称: item[2], 省市: item[3], 总分: item[4] } # 保存数据函数 def save_data(): f open(university_top100.txt, w, encodingutf-8) response requests.get(url, headersheaders) for item in parse_html(response.text): f.write(str(item) \ ) f.close() if __name__ __main__: save_data() 4. 爬取中国天气网城市天气
这个案例使用xpath和requests库爬取中国天气网的城市天气并将这些信息保存到CSV文件中。
import requests
from lxml import etree
import csv# 请求URL
url http://www.weather.com.cn/weather1d/101010100.shtml
# 请求头部
headers {
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
}# 解析页面函数
def parse_html(html):
selector etree.HTML(html)
city selector.xpath(//*[idaround]/div/div[1]/div[1]/h1/text())[0]
temperature selector.xpath(//*[idaround]/div/div[1]/div[1]/p/i/text())[0]
weather selector.xpath(//*[idaround]/div/div[1]/div[1]/p/title)[0]
wind selector.xpath(//*[idaround]/div/div[1]/div[1]/p/span/text())[0]
return city, temperature, weather, wind# 保存数据函数
def save_data():
f open(beijing_weather.csv, w, newline, encodingutf-8-sig)
writer csv.writer(f)
writer.writerow([城市, 温度, 天气, 风力])
for i in range(10):
response requests.get(url, headersheaders)
city, temperature, weather, wind parse_html(response.text)
writer.writerow([city, temperature, weather, wind])
f.close()if __name__ __main__:
save_data()5. 爬取当当网图书信息
这个案例使用xpath和requests库爬取当当网图书信息并将这些信息保存到CSV文件中。
import requests
from lxml import etree
import csv# 请求URL
url http://search.dangdang.com/?keyPythonactinput
# 请求头部
headers {
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
}# 解析页面函数
def parse_html(html):
selector etree.HTML(html)
book_list selector.xpath(//*[idsearch_nature_rg]/ul/li)
for book in book_list:
title book.xpath(a/title)[0]
link book.xpath(a/href)[0]
price book.xpath(p[classprice]/span[classsearch_now_price]/text())[0]
author book.xpath(p[classsearch_book_author]/span[1]/a/title)[0]
publish_date book.xpath(p[classsearch_book_author]/span[2]/text())[0]
publisher book.xpath(p[classsearch_book_author]/span[3]/a/title)[0]
yield {
书名: title,
链接: link,
价格: price,
作者: author,
出版日期: publish_date,
出版社: publisher
}# 保存数据函数
def save_data():
f open(dangdang_books.csv, w, newline, encodingutf-8-sig)
writer csv.writer(f)
writer.writerow([书名, 链接, 价格, 作者, 出版日期, 出版社])
response requests.get(url, headersheaders)
for item in parse_html(response.text):
writer.writerow(item.values())
f.close()if __name__ __main__:
save_data()6. 爬取糗事百科段子
这个案例使用xpath和requests库爬取糗事百科的段子并将这些信息保存到TXT文件中。
import requests
from lxml import etree# 请求URL
url https://www.qiushibaike.com/text/
# 请求头部
headers {
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
}# 解析页面函数
def parse_html(html):
selector etree.HTML(html)
content_list selector.xpath(//div[classcontent]/span/text())
for content in content_list:
yield content# 保存数据函数
def save_data():
f open(qiushibaike_jokes.txt, w, encodingutf-8)
for i in range(3):
url https://www.qiushibaike.com/text/page/ str(i1) /
response requests.get(url, headersheaders)
for content in parse_html(response.text):
f.write(content \) f.close()
if __name__ __main__:
save_data()7. 爬取新浪微博
这个案例使用selenium和requests库爬取新浪微博并将这些信息保存到TXT文件中。
import time
from selenium import webdriver
import requests# 请求URL
url https://weibo.com/
# 请求头部
headers {
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
}# 解析页面函数
def parse_html(html):
print(html)# 保存数据函数
def save_data():
f open(weibo.txt, w, encodingutf-8)
browser webdriver.Chrome()
browser.get(url)
time.sleep(10)
browser.find_element_by_name(username).send_keys(username)
browser.find_element_by_name(password).send_keys(password)
browser.find_element_by_class_name(W_btn_a).click()
time.sleep(10)
response requests.get(url, headersheaders, cookiesbrowser.get_cookies())
parse_html(response.text)
browser.close()
f.close()if __name__ __main__:
save_data()希望这7个小案例能够帮助大家更好地掌握Python爬虫的基础知识
Python入门基础教程【文末有惊喜福利】
爬虫注意事项与技巧 遵循Robots协议 尊重网站的爬虫协议避免爬取禁止爬取的内容。 设置合理的请求间隔 避免对目标网站服务器造成过大压力合理设置请求间隔。 处理反爬虫策略 了解并应对网站的反爬虫策略如IP封禁、验证码等。 使用代理IP、Cookies等技巧 提高爬虫的稳定性和成功率。 分布式爬虫的搭建与优化 使用Scrapy-Redis等框架实现分布式爬虫提高爬取效率。
Python爬虫框架 Scrapy强大的Python爬虫框架支持分布式爬取、多种数据格式、强大的插件系统等。 Scrapy-Redis基于Scrapy和Redis的分布式爬虫框架实现分布式爬取和去重功能。
结语
通过本文的讲解相信读者已经对Python爬虫有了较为全面的认识。爬虫技能在数据分析、自然语言处理等领域具有广泛的应用希望读者能够动手实践不断提高自己的技能水平。同时请注意合法合规地进行爬虫遵守相关法律法规。祝您学习愉快
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料给那些想学习 Python 的小伙伴们一点帮助
① Python所有方向的学习路线图清楚各个方向要学什么东西
②Python、PyCharm学习工具包全家桶环境配置教程视频
③Python全套电子书籍PDF全部都是干货知识
④ 100多节Python课程视频涵盖必备基础、爬虫和数据分析
⑤ 100多个Python实战案例学习不再是只会理论
全套Python学习资料分享
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理形成各个领域的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。 二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了还有环境配置的教程给大家节省了很多时间。 三、全套PDF电子书
书籍的好处就在于权威和体系健全刚开始学习的时候你可以只看视频或者听某个人讲课但等你学完之后你觉得你掌握了这时候建议还是得去看一下书籍看权威技术书籍也是每个程序员必经之路。 四、入门学习视频全套
我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。 五、实战案例
光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。 六、面试资料
我们学习Python必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有阿里大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。 希望这些内容对大家有所帮助因为你我都是热爱python的编程语言爱好者。