从0开始学爬虫8使用requests/pymysql和beautifulsoup4爬取维基百科词条链接并存入数据库
从0开始学爬虫8使用requests和beautifulsoup4爬取维基百科词条链接并存入数据库
Python使用requests和beautifulsoup4爬取维基百科词条链接并存入数据库
参考文档:
https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/
# 安装 beautifulsoup4
(pytools) D:\python\pytools>pip install beautifulsoup4
安装mysql的模块
pymysql的地址:https://github.com/PyMySQL/PyMySQL
爬取维基百科词条
# coding=utf-8 from bs4 import BeautifulSoup
import requests
import re def spider_wike():
url = "https://en.wikipedia.org/wiki/Main_Page"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"}
resp = requests.get(url, headers = headers)
# 将响应数据转换为utf-8编码
resp.encoding = 'utf-8' html_doc = resp.text soup = BeautifulSoup(html_doc, "html.parser")
# 找到以wiki开头的a标签的href属性
list_urls = soup.find_all("a", href=re.compile("^/wiki/"))
# print(list_urls) # 输出所有的词条对应的名称和URL
for url in list_urls:
# 过滤掉.jpg 或.JPG 结尾的URL
if not re.search(r"\.(jpg|JPG)", url["href"]):
# 词条加网址
# sting只能获取一个, get_text() 可以获取标签下所有的内容
print(url.get_text(), " <------>", "https://en.wikipedia.org" + url["href"]) if __name__ == '__main__':
spider_wike()
# 将维基百科词条链接存入数据库
# coding=utf-8 from bs4 import BeautifulSoup
import requests
import re
import pymysql.cursors '''
# 环境准备
pip install pymysql
create database wikiurl charset=utf8mb4;
use wikiurl;
create table urls (id int primary key auto_increment,urlname varchar(255),urlhref varchar(1000));
'''
url = "https://en.wikipedia.org/wiki/Main_Page"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"}
resp = requests.get(url, headers = headers)
# 将响应数据转换为utf-8编码
resp.encoding = 'utf-8' html_doc = resp.text soup = BeautifulSoup(html_doc, "html.parser")
# 找到以wiki开头的a标签的href属性
list_urls = soup.find_all("a", href=re.compile("^/wiki/"))
# print(list_urls) # 输出所有的词条对应的名称和URL
for url in list_urls:
# 过滤掉.jpg 或.JPG 结尾的URL
if not re.search(r"\.(jpg|JPG)", url["href"]):
# 词条加网址
# sting只能获取一个, get_text() 可以获取标签下所有的内容
print(url.get_text(), " <------>", "https://en.wikipedia.org" + url["href"]) connection = pymysql.connect(host='localhost',
user='root',
password='root',
db='wikiurl',
charset='utf8mb4')
try:
# 获取回话指针
with connection.cursor() as cursor:
# 创建sql语句
sql = "insert into `urls`(`urlname`,`urlhref`) values(%s,%s)" # 执行sql语句
cursor.execute(sql,(url.get_text(), "https://en.wikipedia.org" + url["href"]))
# 提交数据
connection.commit()
finally:
connection.close()
# 从数据库读取词条信息
# coding=utf-8 import pymysql def get_conn():
connection = pymysql.connect(host='localhost',
user='root',
password='root',
db='wikiurl',
charset='utf8mb4')
return connection def get_wiki_data():
conn = get_conn() sql = "select `urlname`,`urlhref` from urls"
cur = conn.cursor()
# 获取总记录条数
count = cur.execute(sql)
print(count) # 获取所有数据
# urllists = cur.fetchall()
# 获取指定条目数据
# urllists = cur.fetchmany(3)
#
# for url in urllists:
# print(url[0],'<--->',url[1]) # 获取一条数据
link = cur.fetchone()
print(link) # 关闭数据库连接
conn.close() def get_data():
conn = get_conn() try:
with conn.cursor() as cur:
sql = "select `urlname`,`urlhref` from urls where `id` is not NULL"
count = cur.execute(sql)
print(count) # 查询所有数据
# data = cur.fetchall()
# print(data) # 查询指定条目数据
result = cur.fetchmany(size = 5)
print(result)
finally:
conn.close() if __name__ == '__main__':
# get_wiki_data()
get_data()
从0开始学爬虫8使用requests/pymysql和beautifulsoup4爬取维基百科词条链接并存入数据库的更多相关文章
- 从0开始学爬虫9之requests库的学习之环境搭建
从0开始学爬虫9之requests库的学习之环境搭建 Requests库的环境搭建 环境:python2.7.9版本 参考文档:http://2.python-requests.org/zh_CN/l ...
- 从0开始学爬虫4之requests基础知识
从0开始学爬虫4之requests基础知识 安装requestspip install requests get请求:可以用浏览器直接访问请求可以携带参数,但是又长度限制请求参数直接放在URL后面 P ...
- <爬虫>利用BeautifulSoup爬取百度百科虚拟人物资料存入Mysql数据库
网页情况: 代码: import requests from requests.exceptions import RequestException from bs4 import Beautiful ...
- NodeJs简单七行爬虫--爬取自己Qzone的说说并存入数据库
没有那么难的,嘿嘿,说起来呢其实挺简单的,或者不能叫爬虫,只需要将自己的数据加载到程序里再进行解析就可以了,如果说你的Qzone是向所有人开放的,那么就有一个JSONP的接口,这么说来就简单了,也就不 ...
- python+xpath+requests爬取维基百科历史上的今天
import requests import urllib.parse import datetime from lxml import etree fhout = open("result ...
- python爬虫爬取ip记录网站信息并存入数据库
import requests import re import pymysql #10页 仔细观察路由 db = pymysql.connect("localhost",&quo ...
- python简单爬虫 用beautifulsoup爬取百度百科词条
目标:爬取“湖南大学”百科词条并处理数据 需要获取的数据: 源代码: <div class="basic-info cmn-clearfix"> <dl clas ...
- R语言爬虫:爬取百度百科词条
抓取目标:抓取花儿与少年的百度百科中成员信息 url <- "http://baike.baidu.com/item/%E8%8A%B1%E5%84%BF%E4%B8%8E%E5%B0 ...
- 爬虫实战(一) 用Python爬取百度百科
最近博主遇到这样一个需求:当用户输入一个词语时,返回这个词语的解释 我的第一个想法是做一个数据库,把常用的词语和词语的解释放到数据库里面,当用户查询时直接读取数据库结果 但是自己又没有心思做这样一个数 ...
随机推荐
- 矩阵迹 tr(AB)=tr(BA)的证明
其实更为直观的理解是:AB与BA具有相同的对角线元素,因此tr(AB)=tr(BA)必然成立 ref:https://blog.csdn.net/silence1214/article/details ...
- 如何使用MCUXpresso IDE创建一个Cortex-M工程
拿到Cortex-M开发板之后,就可以开始使用MCUXpresso IDE上手入门.在这个教程中,我们将详细介绍如何基于CMSIS(Cortex微控制器软件接口标准)在MCUXpresso IDE中为 ...
- test20190827 NOIP2019 模拟赛
100+100+50=250.最后那道期望题需要用另外的方式统计. 精灵加护 ljss 被 M 个敌人打倒在地上啦!每个敌人有一个威力值 bi.但是他手中还拥有 N 把武器!每把武器有一个威力值 ai ...
- 样条函数后续(java)--可在hive中执行的函数
之前写的样条插值算法只能在本地执行,但是我想要的是可在hive中执行的jar包,为了符合我的要求,经过痛苦.气愤.悲伤等一系列过程,终于实现了: 想要实现可在hive中执行的jar包,以下是具体步骤: ...
- LINQ查询表达式(3) - LINQ 查询分组
对查询结果进行分组 分组是 LINQ 最强大的功能之一. 下面的示例演示如何以各种方式对数据进行分组: 按照单个属性. 按照字符串属性的首字母. 按照计算出的数值范围. 按照布尔谓词或其他表达式. 按 ...
- Oracle数据库中的dual表
select user from dual; select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--获得当前系统时间 select S ...
- goto语句——慎用,但是可以用
最近使用了goto语句,是因为if嵌套太深了,因此把错误处理同意了,直接使用goto语句. 举例: #include <stdio.h> int main () { /* local va ...
- Dubbo源码分析(2):ServiceBean
ServiceBean时序图
- C++类分号(;)问题
环境:vs2010 问题:今天编代码过程中发现好多很奇怪的错误,我以为昨天调了下编译器才出问题了.搞了好久,代码注释掉很多还是不行,并且错误还一直在变化.问题大概如下: (照片上传不了) .error ...
- Java - 框架之 Hibernate
一:hibernate.cfg.xml 配置 <!-- 1.配置数据库连接的4个参数 --> <property name="hibernate.connection.dr ...