首页 > 编程语言 >无涯教程-Python爬虫 - 数据处理

无涯教程-Python爬虫 - 数据处理

时间:2023-11-29 22:32:43浏览次数:52  
标签:抓取 title Python 无涯 爬虫 content MySQL import

在前面的章节中,无涯教程学习了有关通过各种Python模块从网页中提取数据或进行网页抓取的知识。在本章中研究各种技术来处理已抓取的数据。

要处理已抓取的数据,必须将数据以特定格式存储在本地计算机上,例如电子表格(CSV),JSON或有时存储在MySQL等数据库中。

CSV和JSON数据处理

首先,从网页抓取后,无涯教程将信息写入CSV文件或电子表格中,首先通过一个简单的示例来理解,在该示例中,将像以前一样使用 BeautifulSoup 模块获取信息,然后使用Python CSV模块将文本信息写入CSV文件。

首先,需要导入必要的Python库,如下所示:

import requests
from bs4 import BeautifulSoup
import csv

在下面的代码行中,使用请求对URL进行GET HTTP请求: 通过发出GET请求https://authoraditiagarwal.com/。

r=requests.get('https://authoraditiagarwal.com/')

现在,需要创建一个Soup对象 ,如下所示:

soup=BeautifulSoup(r.text, 'lxml')

现在,在接下来的代码行的帮助下,将捕获的数据写入名为dataprocessing.csv的CSV文件中。

f=csv.writer(open(' dataprocessing.csv ','w'))
f.writerow(['Title'])
f.writerow([soup.title.text])

运行此脚本后,文本信息或网页标题将保存在本地计算机上的上述CSV文件中。

同样,可以将收集的信息保存在JSON文件中。以下是一个易于理解的Python脚本,用于执行与上一个Python脚本中相同的信息,但是这次使用JSON Python模块将所获取的信息保存在JSONfile.txt中。

import requests
from bs4 import BeautifulSoup
import csv
import json
r=requests.get('https://authoraditiagarwal.com/')
soup=BeautifulSoup(r.text, 'lxml')
y=json.dumps(soup.title.text)
with open('JSONFile.txt', 'wt') as outfile:
   json.dump(y, outfile)

运行此脚本后,抓取的信息(即网页标题)将保存在本地计算机上的上述文本文件中。

MySQL数据处理

让无涯教程学习如何使用MySQL处理数据。如果您想了解MySQL,则可以点击链接https://www.learnfk.com/mysql/。

借助以下步骤,可以将数据抓取并处理到MySQL表中-

第1步    -  首先,通过使用MySQL,需要创建一个数据库和表,要在其中保存抓取的数据。例如,使用以下查询创建表-

CREATE TABLE Scrap_pages (id BIGINT(7) NOT NULL AUTO_INCREMENT,
title VARCHAR(200), content VARCHAR(10000),PRIMARY KEY(id));

第2步    -  接下来,需要处理Unicode。请注意,默认情况下,MySQL不处理Unicode。需要借助以下命令来打开此函数,这些命令将更改数据库,表以及两列的默认字符集-

ALTER DATABASE scrap CHARACTER SET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
ALTER TABLE Scrap_pages CONVERT TO CHARACTER SET utf8mb4 COLLATE
utf8mb4_unicode_ci;
ALTER TABLE Scrap_pages CHANGE title title VARCHAR(200) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
ALTER TABLE pages CHANGE content content VARCHAR(10000) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

第3步    -  现在,将MySQL与Python集成。为此,将需要PyMySQL,可以通过以下命令进行安装

pip install PyMySQL 

第4步    -  现在,无涯教程先前创建的名为Scrap的数据库已准备好将数据从Web上抓取后保存到名为Scrap_pages的表中。在示例中,将从Wikipedia抓取数据,并将其保存到数据库中。

首先,需要导入所需的Python模块。

from urllib.request import urlopen
from bs4 import BeautifulSoup
import datetime
import random
import pymysql
import re

现在,创建一个连接,将其与Python集成在一起。

conn=pymysql.connect(host='127.0.0.1',user='root', passwd=None, db='mysql',
charset='utf8')
cur=conn.cursor()
cur.execute("USE scrap")
random.seed(datetime.datetime.now())
def store(title, content):
   cur.execute('INSERT INTO scrap_pages (title, content) VALUES ''("%s","%s")', (title, content))
   cur.connection.commit()

现在,连接Wikipedia并从中获取数据。

def getLinks(articleUrl):
   html=urlopen('http://en.wikipedia.org'+articleUrl)
   bs=BeautifulSoup(html, 'html.parser')
   title=bs.find('h1').get_text()
   content=bs.find('div', {'id':'mw-content-text'}).find('p').get_text()
   store(title, content)
   return bs.find('div', {'id':'bodyContent'}).findAll('a',href=re.compile('^(/wiki/)((?!:).)*$'))
links=getLinks('/wiki/Kevin_Bacon')
try:
   while len(links) > 0:
      newArticle=links[random.randint(0, len(links)-1)].attrs['href']
      print(newArticle)
      links=getLinks(newArticle)

最后,无涯教程需要关闭游标和连接。

finally:
   cur.close()
   conn.close()

这会将从Wikipedia收集的数据保存到名为scrap_pages的表中。

参考链接

https://www.learnfk.com/python-web-scraping/python-web-scraping-data-processing.html

标签:抓取,title,Python,无涯,爬虫,content,MySQL,import
From: https://blog.51cto.com/u_14033984/8620642

相关文章

  • # yyds干货盘点 # 麻烦问一下Python采集到的文本列表中有大量的 ', ' 符号 想这种符号
    大家好,我是皮皮。一、前言前几天在Python铂金流群【泅渡】问了一个Python字符处理的问题,一起来看看吧。问题描述:麻烦问一下Python采集到的文本列表中有大量的  ','  符号 想这种符号怎么删除?二、实现过程这里【不上班能干啥!】和【瑜亮老师】分别给了一个指导,如下图所示:......
  • 聪明办法学python(3)
    聪明办法学python(3)TASK05:变量与函数一.变量:1.1"="来赋值x=5print(x)#5print(x*2)#25新的值会覆盖掉旧的值新值的数据类型不必与旧值相同1.2变量命名规则:必须以字母或者下划线开头命名可由字母,数字,下划线组成大小写尽量避免使用保留字命名1.3更新......
  • Python3
    Python3条件ifelse语句if条件:执行elif条件:执行else条件:执行matchcase语句match变量名:case条件:执行case条件:执行case_:执行即使匹配到相应的case如果不跳出或return,会继续执行下面的语句。c......
  • Python中raise异常处理的方法
     try:gender=input('请输入您的性别:')ifgender!='男'andgender!='女':#如果输入的不是男或者女,判断为True,那么执行第四刚代码raiseException('性别只能是男或女')#抛出异常对象else:print('您的性别:',gender)#如果是男,或者女......
  • 聪明办法学Python Task05 & 选学01
    聪明办法学Python学习笔记Chapter4条件Conditionalsif语句ifstatementConditionalsMakeDecisionsif语句流程一个例子deff(x):print("A",end="")ifx==0:print("B",end="")print("C",end=&......
  • python基础之流程控制语句
    流程控制#控制事物的执行流程 流程控制,是计算机运算领域的用语,意指在程序运行时,个别的指令(或是陈述、子程序)运行或求值的顺序。三大流程控制结构:1.顺序结构:代码从上到下,全部执行2.分支结构:判断语句,代码有选择性的执行3.循环结构:重复执行某......
  • 无涯教程-Python爬虫 - 模块安装
    在本章中,让无涯教程学习可用于Web抓取的各种Python模块。虚拟环境Virtualenv是用于创建隔离的Python环境的工具。借助virtualenv,可以创建一个文件夹,其中包含使用Python项目所需的软件包所需的所有可执行文件。它还允许添加和修改Python模块,而无需访问全局安装。您可以使用以下......
  • Python中代码异常处理
        ......
  • python part4
    Pythonpart4条件if语句abs()布尔表达式嵌套if-elif-else推导式本质是python的语法糖match-case语句case后的内容可以用|隔开清晰的代码风格让if后的条件为真if下的内容不要空白,不够清晰明了用if-if会导致bug多用elifif套if比较混乱,用and较为清晰......
  • 无涯教程-Python爬虫 - 简介
    Web抓取是从Web提取信息的自动过程,本章将为您提供有关Web抓取的深入概念,它与Web抓取的比较以及为什么要选择Web抓取。网页抓取字典中"Scrapping"一词的含义表示可以从网络中获取某些东西,这里出现两个问题:无涯教程可以从网上获得什么以及如何获得它。第一个问题的答案是"数据......