网页表格抓取(Python使用Web抓取有助于的步骤寻找您想要的抓取数据)

优采云 发布时间: 2021-12-08 23:06

  网页表格抓取(Python使用Web抓取有助于的步骤寻找您想要的抓取数据)

  前言

  爬虫是一种从 网站 抓取大量数据的自动化方法。甚至在 网站 上复制和粘贴您最喜欢的引用或台词也是一种网络抓取形式。大多数 网站 不允许您将他们的数据保存在 网站 上供您使用。因此,唯一的选择是手动复制数据,这会消耗大量时间,甚至可能需要几天才能完成。

  网站 上的大部分数据都是非结构化的。网页抓取有助于将这些非结构化数据以自定义和结构化的形式在本地或数据库中存储。如果您出于学习目的抓取网页,则不太可能遇到任何问题。在不违反服务条款的情况下自己进行一些网络爬行以提高您的技能是一个很好的做法。.

  履带步数

  为什么使用 Python 进行网页抓取?

  Python 非常快,而且网页抓取更容易。因为代码太容易了,你可以用简单的小代码来执行大任务。

  如何进行网页抓取?

  我们需要运行网页爬取代码,将请求发送到我们要爬取的网站的URL。服务器发送数据并允许我们读取 HTML 或 XML 页面作为响应。该代码解析 HTML 或 XML 页面,查找数据并提取它们。

  以下是使用 Web 抓取使用 Python 提取数据的步骤

  找到你要爬取的URL,分析网站找到要提取的数据,编写代码,运行代码,从网站中提取数据,将数据按照需要的格式存储在电脑中,用于网络爬取图书馆

  Requests 是一个允许使用 Python 发送 HTTP 请求的模块。HTTP请求用于返回一个收录所有响应数据(如编码、状态、内容等)的响应对象。

  BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据。这适用于您最喜欢的解析器,以提供用于导航、搜索和修改解析树的惯用方法。它专为快速且高度可靠的数据提取而设计。

  pandas 是一个开源库,它允许我们在 Python Web 开发中执行数据操作。它建立在 Numpy 包之上,其关键数据结构称为 DataFrame。DataFrames 允许我们在观察数据行和变量列中存储和操作表数据。

  Tqdm 是另一个 python 库,它可以快速让你的循环显示一个智能进度表——你所要做的就是用 Tqdm(可迭代)包装任何可迭代的。

  演示:抓住一个 网站

  Step 1. 找到你要抓取的网址

  为了演示,我们将抓取网页以提取手机的详细信息。我用一个例子()来演示这个过程。

  Stpe 2. 分析 网站

  数据通常嵌套在标签中。分析并检查我们要获取的数据是否在其嵌套的页面上进行了标记。要查看页面,只需右键单击该元素并单击“检查”。将打开一个小的检查元件框。你可以看到网站背后的原创代码。现在您可以找到要抓取的详细信息标签。

  您可以在控制台的左上角找到一个箭头符号。如果单击箭头,然后单击产品区域,则控制台选项卡中将突出显示特定产品区域的代码。

  我们应该做的第一件事是回顾和理解HTML的结构,因为从网站中获取数据非常重要。网站 页面上会有很多代码,我们需要收录我们数据的代码。学习 HTML 的基础知识将帮助您熟悉 HTML 标签。

  

  步骤3.找到要提取的数据

  我们会提取手机数据,如产品名称、实际价格、折扣价等,您可以提取任何类型的数据。为此,我们必须找到收录我们数据的标签。

  通过检查元素的区域打开控制台。单击左上角的箭头,然后单击产品。您现在可以看到我们点击的产品的具体代码。

  步骤4. 写代码

  现在我们必须找出数据和链接在哪里。让我们开始编码。

  创建一个名为 scrap.py 的文件并在您选择的任何编辑器中打开它。我们将使用 pip 安装上面提到的四个 Python 库。

  第一个也是主要的过程是访问站点数据。我们已经设置了网站的URL并访问了网站。

  url = 'https://www.example.com/products/mobiles-mobile-phones?sort=plrty'headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64)' 'AppleWebKit/537.36 (KHTML, like Gecko)' 'Chrome/64.0.3282.167 Safari/537.36' }result = requests.get(url, headers=headers,verify=True)Print(result)

  输出:

  如果你看到上面的结果,那么你就成功访问了这个网站。

  步骤 5. 运行代码并从 网站 中提取数据

  现在,我们将使用 Beautifulsoup 来解析 HTML。

  soup = BeautifulSoup(result.content, 'html.parser')

  如果我们打印soup,那么我们就能看到整个网站 页面的HTML 内容。我们现在要做的是过滤收录数据的部分。因此,我们将从汤中提取部分标签。

  section=soup.find("section", class_='js-section').find_all("div",{'class':'product-desc-rating})Print(section)

  结果如下:

  

  现在,我们可以在div的“product-desc-rating”类中提取手机的详细信息。我为手机的每个列详细信息创建了一个列表,并使用 for 循环将其附加到该列表中。

  Products = []url = []Actual_Price = []Discounted_Price = []Discount = []

  产品名称出现在 HTML 中的 p 标签(段落标签)下,而 product_url 出现在锚标签下。

  HTML 锚标记定义了一个将一个页面链接到另一个页面的超链接。它可以创建指向另一个网页和文件、位置或任何 URL 的超链接。“href”属性是 HTML 标签最重要的属性。以及指向目标页面或 URL 的链接。

  然后我们将提取实际价格和折扣价格,两者都出现在 span 标签中。标签用于对内联元素进行分组。并且标签本身不提供任何视觉变化。最后,我们将从 div 标签中提取报价百分比。div 标签是块级标签。它是一种通用的容器标签。它用于 HTML 的各种标记组,以便您可以创建部分并将样式应用于它们。

  for t in tqdm(section): product_name = t.p.text Products.append(product_name) product_url = t.a['href'] url.append(product_url) original_price = t.span.getText() Actual_Price.append(original_price) discounted_price = t.find('span', class_ = 'lfloat product-price').getText() Discounted_Price.append(discounted_price) try: product_discount = t.find('div', class_ = 'product-discount') Discount.append(product_discount.text) except Exception as e: product_discount = None Discount.append(product_discount)

  步骤 6. 以所需格式存储数据

  我们已经提取了数据。我们现在要做的就是将数据存储在文件或数据库中。您可以按所需格式存储数据。这取决于您的要求。在这里,我们将以 CSV(逗号分隔值)格式存储提取的数据。

   = pd.DataFrame({'Product Name':Products,'Actual_Price':Actual_Price,'Discounted_Price':Discounted_Price,'Offer_Percentage':Discount,'Product_url':url}) df.to_csv(' products.csv', index=False, encoding='utf-8')

  

  参考:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线