成都房地产网站开发,电子商务在线网站建设,win8怎么建设网站,网站建设最简单的教程视频前言 前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家#xff1a;https://www.captainbed.cn/z
ChatGPT体验地址 文章目录 前言引言#xff1a;一、爬虫原理1. HTTP请求与响应过程2. 常用爬虫技术 二、P…前言 前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家https://www.captainbed.cn/z
ChatGPT体验地址 文章目录 前言引言一、爬虫原理1. HTTP请求与响应过程2. 常用爬虫技术 二、Python爬虫常用库1. 请求库2. 解析库3. 存储库 三、编写一个简单的Python爬虫四、爬虫实战案例1. 分析网站结构2. 编写爬虫代码 五、爬虫注意事项与技巧结语 引言
随着互联网的快速发展数据成为了新时代的石油。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爬虫常用库
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查询适用于小型爬虫项目。
三、编写一个简单的Python爬虫
以爬取豆瓣电影TOP250为例讲解如何编写一个简单的Python爬虫。
设计爬虫需求 爬取豆瓣电影TOP250的电影名称、评分、导演等信息。编写代码 1使用requests库发送HTTP请求获取网页源代码。 2使用BeautifulSoup库解析网页内容提取所需数据。 3使用pandas库存储数据并保存为CSV文件。运行爬虫并展示结果
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 豆瓣电影TOP250的基础URL
base_url https://movie.douban.com/top250
# 定义一个函数来获取页面内容
def get_page_content(url):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.3}response requests.get(url, headersheaders)if response.status_code 200:return response.textelse:print(请求页面失败:, response.status_code)return None
# 定义一个函数来解析页面内容
def parse_page_content(html):soup BeautifulSoup(html, html.parser)movie_list soup.find_all(div, class_item)movies []for movie in movie_list:title movie.find(span, class_title).get_text()rating movie.find(span, class_rating_num).get_text()director movie.find(p, class_).find(a).get_text()movies.append({title: title, rating: rating, director: director})return movies
# 定义一个函数来保存数据到CSV文件
def save_to_csv(movies):df pd.DataFrame(movies)df.to_csv(douban_top250.csv, indexFalse, encodingutf_8_sig)
# 主函数用于运行爬虫
def main():movies []for i in range(0, 250, 25): # 豆瓣电影TOP250分为10页每页25部电影url f{base_url}?start{i}filterhtml get_page_content(url)if html:movies.extend(parse_page_content(html))save_to_csv(movies)print(爬取完成数据已保存到douban_top250.csv)
# 运行主函数
if __name__ __main__:main()在实际使用中需要根据豆瓣网站的实际情况调整以下内容
URL和参数根据豆瓣电影的URL结构和参数进行设置。BeautifulSoup选择器根据网页源代码的结构编写正确的选择器来提取数据。 此外为了遵守网站的使用协议和法律法规请确保在编写爬虫时遵循以下几点
遵守Robots协议不爬取网站禁止爬取的内容。设置合理的请求间隔避免对网站服务器造成过大压力。如果遇到网站的反爬措施如验证码、IP封禁等请合理应对遵守网站规定。使用爬虫获取的数据请勿用于商业目的或侵犯他人隐私。 最后由于网站结构可能会发生变化上述代码可能需要根据实际情况进行调整。在实际应用中请确保您的爬虫行为合法合规。
四、爬虫实战案例
以爬取某招聘网站职位信息为例讲解如何编写一个实用的Python爬虫。
1. 分析网站结构
通过观察招聘网站的URL、参数和页面结构找到职位信息的来源。
2. 编写爬虫代码
1使用requests库发送带参数的HTTP请求获取职位列表。 2使用lxml库解析职位列表提取职位详情页URL。 3使用PyQuery库解析职位详情页提取职位信息。 4使用SQLite数据库存储职位信息。 3. 结果展示与分析
import requests
from lxml import etree
from pyquery import PyQuery as pq
import sqlite3
# 创建或连接SQLite数据库
conn sqlite3.connect(job.db)
cursor conn.cursor()
# 创建职位信息表
cursor.execute(CREATE TABLE IF NOT EXISTS job (id INTEGER PRIMARY KEY, title TEXT, salary TEXT, company TEXT, location TEXT))
# 分析网站结构后得到的职位列表URL
url https://www.example.com/jobs
# 发送HTTP请求获取职位列表
params {page: 1, # 假设页面参数为page这里请求第1页city: beijing # 假设城市参数为city这里请求北京地区的职位
}
response requests.get(url, paramsparams)
response.encoding utf-8 # 设置字符编码防止乱码
# 使用lxml解析职位列表提取职位详情页URL
html etree.HTML(response.text)
job_list html.xpath(//div[classjob-list]/ul/li/a/href) # 假设职位详情页URL在a标签的href属性中
# 遍历职位详情页URL爬取职位信息
for job_url in job_list:job_response requests.get(job_url)job_response.encoding utf-8job_html pq(job_response.text)# 使用PyQuery解析职位详情页提取职位信息title job_html(.job-title).text() # 假设职位名称在class为job-title的元素中salary job_html(.job-salary).text() # 假设薪资信息在class为job-salary的元素中company job_html(.job-company).text() # 假设公司名称在class为job-company的元素中location job_html(.job-location).text() # 假设工作地点在class为job-location的元素中# 存储职位信息到SQLite数据库cursor.execute(INSERT INTO job (title, salary, company, location) VALUES (?, ?, ?, ?), (title, salary, company, location))conn.commit()
# 关闭数据库连接
cursor.close()
conn.close()在实际使用中需要根据目标网站的实际情况调整以下内容
URL和参数根据目标网站的URL结构和参数进行设置。Xpath表达式根据网页源代码的结构编写正确的Xpath表达式来提取数据。PyQuery选择器根据网页源代码的结构编写正确的CSS选择器来提取数据。数据库操作根据需要创建合适的数据库表结构并插入数据。 此外为了遵守网站的使用协议和法律法规请确保在编写爬虫时遵循以下几点
遵守Robots协议不爬取网站禁止爬取的内容。设置合理的请求间隔避免对网站服务器造成过大压力。如果遇到网站的反爬措施如验证码、IP封禁等请合理应对遵守网站规定。使用爬虫获取的数据请勿用于商业目的或侵犯他人隐私。
五、爬虫注意事项与技巧
遵循Robots协议 尊重网站的爬虫协议避免爬取禁止爬取的内容。设置合理的请求间隔 避免对目标网站服务器造成过大压力合理设置请求间隔。处理反爬虫策略 了解并应对网站的反爬虫策略如IP封禁、验证码等。使用代理IP、Cookies等技巧 提高爬虫的稳定性和成功率。分布式爬虫的搭建与优化 使用Scrapy-Redis等框架实现分布式爬虫提高爬取效率。 六、Python爬虫框架Scrapy强大的Python爬虫框架支持分布式爬取、多种数据格式、强大的插件系统等。Scrapy-Redis基于Scrapy和Redis的分布式爬虫框架实现分布式爬取和去重功能。
结语
通过本文的讲解相信读者已经对Python爬虫有了较为全面的认识。爬虫技能在数据分析、自然语言处理等领域具有广泛的应用希望读者能够动手实践不断提高自己的技能水平。同时请注意合法合规地进行爬虫遵守相关法律法规。祝您学习愉快 文章转载自: http://www.morning.fgkrh.cn.gov.cn.fgkrh.cn http://www.morning.tztgq.cn.gov.cn.tztgq.cn http://www.morning.fyskq.cn.gov.cn.fyskq.cn http://www.morning.rqlf.cn.gov.cn.rqlf.cn http://www.morning.dztp.cn.gov.cn.dztp.cn http://www.morning.yqrgq.cn.gov.cn.yqrgq.cn http://www.morning.yhtnr.cn.gov.cn.yhtnr.cn http://www.morning.gxtfk.cn.gov.cn.gxtfk.cn http://www.morning.c7501.cn.gov.cn.c7501.cn http://www.morning.tsxg.cn.gov.cn.tsxg.cn http://www.morning.mmsf.cn.gov.cn.mmsf.cn http://www.morning.nwwzc.cn.gov.cn.nwwzc.cn http://www.morning.rzjfn.cn.gov.cn.rzjfn.cn http://www.morning.rzysq.cn.gov.cn.rzysq.cn http://www.morning.tfei69.cn.gov.cn.tfei69.cn http://www.morning.kfstq.cn.gov.cn.kfstq.cn http://www.morning.bxch.cn.gov.cn.bxch.cn http://www.morning.jxtbr.cn.gov.cn.jxtbr.cn http://www.morning.jgnst.cn.gov.cn.jgnst.cn http://www.morning.rdmz.cn.gov.cn.rdmz.cn http://www.morning.trbxt.cn.gov.cn.trbxt.cn http://www.morning.sfwfk.cn.gov.cn.sfwfk.cn http://www.morning.lfjmp.cn.gov.cn.lfjmp.cn http://www.morning.yghlr.cn.gov.cn.yghlr.cn http://www.morning.qzxb.cn.gov.cn.qzxb.cn http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn http://www.morning.fhlfp.cn.gov.cn.fhlfp.cn http://www.morning.lcjw.cn.gov.cn.lcjw.cn http://www.morning.dansj.com.gov.cn.dansj.com http://www.morning.pbzlh.cn.gov.cn.pbzlh.cn http://www.morning.bxbnf.cn.gov.cn.bxbnf.cn http://www.morning.jzykw.cn.gov.cn.jzykw.cn http://www.morning.dblgm.cn.gov.cn.dblgm.cn http://www.morning.sltfk.cn.gov.cn.sltfk.cn http://www.morning.hwnnm.cn.gov.cn.hwnnm.cn http://www.morning.xkppj.cn.gov.cn.xkppj.cn http://www.morning.dzfwb.cn.gov.cn.dzfwb.cn http://www.morning.txysr.cn.gov.cn.txysr.cn http://www.morning.srwny.cn.gov.cn.srwny.cn http://www.morning.qynnw.cn.gov.cn.qynnw.cn http://www.morning.wbxr.cn.gov.cn.wbxr.cn http://www.morning.dgckn.cn.gov.cn.dgckn.cn http://www.morning.hpxxq.cn.gov.cn.hpxxq.cn http://www.morning.cttti.com.gov.cn.cttti.com http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn http://www.morning.ffbl.cn.gov.cn.ffbl.cn http://www.morning.lpmjr.cn.gov.cn.lpmjr.cn http://www.morning.ljdhj.cn.gov.cn.ljdhj.cn http://www.morning.nrzkg.cn.gov.cn.nrzkg.cn http://www.morning.gpmrj.cn.gov.cn.gpmrj.cn http://www.morning.sfphz.cn.gov.cn.sfphz.cn http://www.morning.nnhrp.cn.gov.cn.nnhrp.cn http://www.morning.27asw.cn.gov.cn.27asw.cn http://www.morning.snbry.cn.gov.cn.snbry.cn http://www.morning.tplht.cn.gov.cn.tplht.cn http://www.morning.rbqlw.cn.gov.cn.rbqlw.cn http://www.morning.nwfpl.cn.gov.cn.nwfpl.cn http://www.morning.smggx.cn.gov.cn.smggx.cn http://www.morning.kpbn.cn.gov.cn.kpbn.cn http://www.morning.nkhdt.cn.gov.cn.nkhdt.cn http://www.morning.nlkm.cn.gov.cn.nlkm.cn http://www.morning.qhvah.cn.gov.cn.qhvah.cn http://www.morning.rsszk.cn.gov.cn.rsszk.cn http://www.morning.sfnr.cn.gov.cn.sfnr.cn http://www.morning.rhjhy.cn.gov.cn.rhjhy.cn http://www.morning.rtlth.cn.gov.cn.rtlth.cn http://www.morning.ngmjn.cn.gov.cn.ngmjn.cn http://www.morning.rdkgw.cn.gov.cn.rdkgw.cn http://www.morning.ngznq.cn.gov.cn.ngznq.cn http://www.morning.rdng.cn.gov.cn.rdng.cn http://www.morning.zxwqt.cn.gov.cn.zxwqt.cn http://www.morning.gqcsd.cn.gov.cn.gqcsd.cn http://www.morning.nxrgl.cn.gov.cn.nxrgl.cn http://www.morning.kjmcq.cn.gov.cn.kjmcq.cn http://www.morning.mbrbg.cn.gov.cn.mbrbg.cn http://www.morning.mprpx.cn.gov.cn.mprpx.cn http://www.morning.mrtdq.cn.gov.cn.mrtdq.cn http://www.morning.ndcf.cn.gov.cn.ndcf.cn http://www.morning.qbgff.cn.gov.cn.qbgff.cn http://www.morning.pqwhk.cn.gov.cn.pqwhk.cn