python爬虫入门级|流程及原理

一.问题描述:

二、爬虫的基本步骤

目录

一.问题描述:

二、爬虫的基本步骤

1.确定URL(链接)、分析网页

2.模拟浏览器,获取数据

3. 解析网页,提取数据

4.保存数据

三、实例演示:

   1.网络爬虫示例。示例目标网站:我们将使用一个示例网站 http://quotes.toscrape.com,这是一个用于练习网络爬虫的网站。


一.问题描述:

网络爬虫,又称为网页蜘蛛。是一种按照一定规则获取网页内容的程序,爬虫被广泛用于互联网搜索引擎或其他类似网站,例如谷歌、百度,爬虫可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的数据。从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。

爬虫是Python的一个重要的内容,使用Python爬虫我们可以轻松的从网络中批量抓取我们想要的数据。

二、爬虫的基本步骤

1.确定URL(链接)、分析网页

确定目标URL: 爬虫需要确定要获取的网页的URL,可以通过手动输入或从其他源获取。

        构建HTTP请求: 爬虫需要构建一个HTTP请求,该请求包含一些必要的信息,例如目标URL、请求方法(例如GET或POST)、请求头部等。在请求头部中,可以包含一些模拟浏览器的信息,如User-Agent、Referer等,以使请求看起来更像是由真实浏览器发送的。

        发送HTTP请求: 爬虫使用网络库或框架发送构建好的HTTP请求到目标URL。这个请求会被发送到服务器上,并等待服务器的响应。

点击下一页URL不发生变化是动态加载;如果网页需要往下拉才能查看更多的内容的一般都是动态加载。

然后查看内容是否在网页源代码里面,如果在的话,一般都是静态网页,反之,则是动态加载网页。

2.模拟浏览器,获取数据

一般用requests、urllib等库实现HTTP网络请求,获取网页源代码或者json数据。

3. 解析网页,提取数据

一般用re正则表达式、Beautiful Soup、xpath等方法提取网页数据。

CSS选择器: CSS选择器是一种通过选择元素的标签名、类名、ID、属性等方式来定位和提取元素的方法。在使用CSS选择器时,可以使用各种选择器组合来精确地定位所需的元素。

例如,如果要提取所有<a>标签中的链接文本,可以使用以下CSS选择器:a。如果要提取类名为my-class的所有段落文本,可以使用以下CSS选择器:.my-class。

在Python中,可以使用Beautiful Soup库来执行CSS选择器。使用Beautiful Soup的select()方法,可以将CSS选择器作为参数传递,并返回匹配的元素列表。

下面是一个使用Beautiful Soup进行CSS选择器提取的示例代码:
 

from bs4 import BeautifulSoup
 
# HTML代码
html = """
<html>
  <body>
    <h1>Title</h1>
    <div class="my-class">
      <p>Paragraph 1</p>
      <p>Paragraph 2</p>
    </div>
    <a href="https://example.com">Link</a>
  </body>
</html>
"""
 
# 创建Beautiful Soup对象
soup = BeautifulSoup(html, 'html.parser')
 
# 使用CSS选择器提取信息
titles = soup.select('h1')
paragraphs = soup.select('.my-class p')
links = soup.select('a[href]')
 
# 打印提取到的信息
for title in titles:
    print(title.text)
for paragraph in paragraphs:
    print(paragraph.text)
for link in links:
    print(link['href'])

 XPath: XPath是另一种强大的定位和提取技术,它使用路径表达式在XML和HTML文档中选择节点。XPath基于文档结构和元素之间的关系,允许更灵活和具有精确目标的元素提取。

XPath路径可以使用元素名称、属性、文本内容等标准来定位元素。使用XPath的优势是可以通过一系列特定的路径表达式来获取所需的元素。

在Python中,可以使用lxml库来执行XPath提取。使用lxml的xpath()方法,可以将XPath表达式作为参数传递,并返回匹配的元素列表。

下面是一个使用lxml进行XPath提取的示例代码:
 

from lxml import etree
 
# HTML代码
html = """
<html>
  <body>
    <h1>Title</h1>
    <div class="my-class">
      <p>Paragraph 1</p>
      <p>Paragraph 2</p>
    </div>
    <a href="https://example.com">Link</a>
  </body>
</html>
"""
 
# 创建lxml解析器
parser = etree.HTMLParser()
 
# 解析HTML代码
tree = etree.parse(StringIO(html), parser)
 
# 使用XPath提取信息
titles = tree.xpath('//h1')
paragraphs = tree.xpath('//div[@class="my-class"]/p')
links = tree.xpath('//a/@href')
 
# 打印提取到的信息
for title in titles:
    print(title.text)
for paragraph in paragraphs:
    print(paragraph.text)
for link in links:
    print(link)
4.保存数据

提取数据后,可以对文本、视频、图片等文件进行保存。文本可以保存为TXT、DOCX、CSV等文件格式。图片可以保存为jpg等格式。视频可以保存为MP4等格式。

CSV文件: 如果你提取的数据是表格形式的,CSV(逗号分隔值)是一个常用的格式。你可以使用Python的csv库来创建、写入和读取CSV文件。


import csv
 
data = [...]  # 提取到的数据
with open('data.csv', 'w', newline='') as csvfile:
    csvwriter = csv.writer(csvfile)
    csvwriter.writerows(data)

JSON文件: 如果你的数据是结构化的,JSON是一种常用的格式。你可以使用Python的json库来保存数据到JSON文件。

import json
 
data = {...}  # 提取到的数据
with open('data.json', 'w') as jsonfile:
    json.dump(data, jsonfile)

其他格式: 根据需要,你还可以将数据保存为XML、Excel或其他自定义格式的文件。

三、实例演示:


   1.网络爬虫示例。
示例目标网站:我们将使用一个示例网站 http://quotes.toscrape.com,这是一个用于练习网络爬虫的网站。

请确保你已经安装了以下Python库:

requests:用于发送HTTP请求和获取网页内容。
BeautifulSoup:用于解析HTML网页内容。
   

import requests
from bs4 import BeautifulSoup
 
# 目标网站的URL
url = 'http://quotes.toscrape.com'
 
# 发送HTTP GET请求,获取网页内容
response = requests.get(url)
 
# 检查请求是否成功
if response.status_code == 200:
    # 使用Beautiful Soup解析网页内容
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 提取网页的标题
    title = soup.title.string
    print('网页标题:', title)
    
    # 提取网页中的图片链接
    img_tags = soup.find_all('img')
    img_links = [img['src'] for img in img_tags]
    print('图片链接:')
    for img_link in img_links:
        print(img_link)
else:
    print('请求失败,状态码:', response.status_code)


2.示例的代码和解释。
       - 使用requests库发送HTTP GET请求,获取目标网站的网页内容。

       - 检查请求是否成功(HTTP状态码为200表示成功)。

       - 使用BeautifulSoup库解析网页内容。这里我们提取了网页的标题和图片链接作为示例。

       - 最后,输出网页标题和图片链接。

今天的分享到此结束,下周再见咯
 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值