Python--(爬虫与数据库的连接)

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: (每一天都是属于你的!)   Python对于初学后巩固基础的人还是更多的来接触python爬虫会更好一些,在Python爬虫中包含很多基础部分知识,并且在项目中会提升你的成功感!加油! 我在工作之余时间,把Python的爬虫基础内容整理了一下,资料因为太多所以都放在QQ群内了,需要的可以来---607021567。

(每一天都是属于你的!)

 

Python对于初学后巩固基础的人还是更多的来接触python爬虫会更好一些,在Python爬虫中包含很多基础部分知识,并且在项目中会提升你的成功感!加油!

我在工作之余时间,把Python的爬虫基础内容整理了一下,资料因为太多所以都放在QQ群内了,需要的可以来---607021567。

今天整理了一个两个网站的小说阅读平台的爬虫,将两个网站的小说可按自有的格式抓取下来自动生成txt文件。

项目介绍:

  --Python爬虫

    --模块:requests,BeautifulSoup,time

    --分析:request模块作用于网站的连接与处理,BeautifulSoup作用于源码中的代码分析与抓取,time主要是在我们抓取的过程中加入时间限制(这个主要是应对有网站监控的,这里我们就不需要了)

 因为这里没有涉及到数据库相关的操作,所以没有对数据库的相关详细内容,但是我会将Python与mongodb、MySQL、Sqlserver的连接方式的代码会附赠在下面。

 

一、网页分析:

首先步步分析网页内容:https://www.booktxt.net/6_6453/2529786.html,cookie信息--F12键。

这里面有很多广告,不过可以不用去理它们,首先获取到我们需要的网址:

 1 # -*- coding:utf-8 -*-
 2 import requests
 3 from bs4 import BeautifulSoup
 4 import time
 5 
 6 def project(url,page):
 7     #url='http://www.23us.so/files/article/html/1/1809/877404.html' #大主宰
 8     #url='http://www.23us.so/files/article/html/6/6100/2193573.html' #天下无双
 9     #url='https://www.booktxt.net/6_6453/2529786.html' #元尊
10     headers={"Cookie": "jieqiVisitId=article_articleviews%3D6453; cscpvrich87",
11         "Host": "www.booktxt.net",
12              "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0",
13              "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}
14     r =requests.get(url,headers,timeout=30)
15     h = r.content

 这里主要使用request模块获取网址的源码,h--就是我们所获取的源码,你可以测试的时候print出来。

 

二、源码分析

我们这里直接在网页中来查看源码:网页中右键查看源码。

这里我们注意到文本的内容包含在<div id="content">的标签内,所以接下来我们使用bs4来处理。

1 soup = BeautifulSoup(h, "html.parser")
2 a1 = soup.find('div',class_="bookname").h1
3 text_da(a1.get_text().encode('utf-8')+'\n\n\n')
4 a = soup.find('div',id='content')
5 text_da(a.get_text().encode('utf-8')+'\n\n\n')

每一行分开解释:

1、使用BeautifulSoup模块,其中"html.parser"是模块内置函数,对源码的分析,这样我们就获取到网址的bs4源码。

2、首先是获取小说中的标题,soup.find--是获取源码中第一个div标签class=“bookname”下的h1标签,当前我们获取到h1标签所有内容包括标签,但是我们需要获取到文本内容。

3、获取获得标签内的文本内容--a1.get_text(),这里的encode('utf-8')是将我们获取的内容需要转码,不然是乱码的状态。

4、获取我们主要的文本内容--同理,需要获得文本内容的标签div

5、获得文本内容。

 

三、分页操作

因为我们浏览的页面会有分页,所有这里也是我们需要注意的地方。

这里的下一章按钮,就是我们的突破点:

1  b = soup.find('div',class_='bottem2')
2  if b:
3      a = b.find_all('a')
4      #shuurl = 'http://www.23us.so'+a[-1]['href']
5      shuurl = 'https://www.booktxt.net' + a[-2]['href']
6      #print shuurl
7      page=page+1
8      project(shuurl,page)

 我们在源码中获取到的下一章的网址位于a标签内。

3行、--我们获取所有的a标签。

5行、a[-2]是获取我们倒数第二个标签也就是我们的下一章标签,【’href‘】--是获得a标签内的href的内容也就是我们的地址,这里需要拼接字符串。

7行、是抓取的注释内容,稍后在源码中你会看到效果

8行、有的小伙伴注意到了,这里是调用函数,函数的名字就是我们一开始定义的函数,就是它自己本身。

 

四、写入文件

接下来,我们的主要价值数据获取到,但是我们需要它成为txt文件,所以我写了一个函数,在上面的函数体中直接调用就可以了。

1 def text_da(text):
2     fo = open("foo.txt", "a")
3     fo.write(text)
4 
5     # 关闭打开的文件
6     fo.close()

 

五、启动函数

最后一步,就是我们的启动程序代码。

1 if __name__ == '__main__':
2     page=1
3     url = 'https://www.booktxt.net/6_6453/2529786.html'  # 元尊
4     project(url,page)

这里主要是python的内置函数,作为启动py文件内的函数。

 

 六、源码

哦!忘了源码-----

 1 # -*- coding:utf-8 -*-
 2 import requests
 3 from bs4 import BeautifulSoup
 4 import time
 5 
 6 def project(url,page):
 7     #url='http://www.23us.so/files/article/html/1/1809/877404.html' #大主宰
 8     #url='http://www.23us.so/files/article/html/6/6100/2193573.html' #天下无双
 9     #url='https://www.booktxt.net/6_6453/2529786.html' #元尊
10     headers={"Cookie": "jieqiVisitId=article_articleviews%3D6453; cscpvrich8793_fidx=4; __tins__19219364=%7B%22sid%22%3A%201527749231776%2C%20%22vd%22%3A%204%2C%20%22expires%22%3A%201527751067272%7D; __51cke__=; __51laig__=4; Hm_lvt_6949867c34e7741ebac3943050f04833=1527749232; Hm_lpvt_6949867c34e7741ebac3943050f04833=1527749267; cscpvcouplet8792_fidx=4; cscpvrich8791_fidx=4",
11         "Host": "www.booktxt.net",
12              "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0",
13              "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}
14     r =requests.get(url,headers,timeout=30)
15     h = r.content
16     #print h
17     soup = BeautifulSoup(h, "html.parser")
18     #a = soup.find('dd',id='contents')
19     #print a.get_text()
20     a1 = soup.find('div',class_="bookname").h1
21     text_da(a1.get_text().encode('utf-8')+'\n\n\n')
22     a = soup.find('div',id='content')
23     text_da(a.get_text().encode('utf-8')+'\n\n\n')
24     print ''+str(page)+'章!'
25     #b = soup.find('dd',id='footlink')
26     b = soup.find('div',class_='bottem2')
27     if b:
28         a = b.find_all('a')
29         #shuurl = 'http://www.23us.so'+a[-1]['href']
30         shuurl = 'https://www.booktxt.net' + a[-2]['href']
31         #print shuurl
32         page=page+1
33         project(shuurl,page)
34 
35 def text_da(text):
36     fo = open("foo.txt", "a")
37     fo.write(text)
38 
39     # 关闭打开的文件
40     fo.close()
41 
42 if __name__ == '__main__':
43     page=1
44     url = 'https://www.booktxt.net/6_6453/2529786.html'  # 元尊
45     project(url,page)

 

对了!还有Python对于数据库的连接操作,我这里直接就贴源码了,其中很多的内容我都注释了!不懂的可以加群---607021567(需要验证信息,因为我不知道来的是朋友还是敌人)

 1 # -*- coding:utf-8 -*-
 2 import pymongo
 3 from pymongo import MongoClient
 4 import json
 5 #MONGODB
 6 #连接
 7 client = MongoClient('mongodb://localhost')
 8 db = client.test
 9 table='test'
10 #db[table].insert({'user_id':2,'name':'zhu'})
11 #db[table].update({'name':'zhu'},{'$set':{'user_id':2}})
12 #db[table].remove({'name':'zhu'})
13 #查询结果排序(key:1或者-1)升序或者降序
14 a = db[table].find().sort("user_id",1)
15 print a
16 for i in a:
17     print i
18 
19 #db.authenticate('test','test')
20 
21 """table = 'imi_product'
22 a = db[table].find({'partno':'NEN1FX6'}).limit(1)
23 detailList = []
24 for i in a:
25         if (i.get("specs")):
26                 specary = i.get("specs")
27                 for i in specary:
28                     detailList.append({"left": i, "right": specary[i]})
29 print detailList
30 for i in detailList:
31     print i.get('right')
32 #查询和增加
33 #db[table].insert({'sn':1,'b':'b'})
34 #更改
35 #db[table].update({'sn':1},{'$set':{'b':'sda'}})
36 #删除
37 #删除name=lisi的全部记录
38 #db[table].remove({'sn': 1})
39 #删除集合里的所有记录
40 #db.users.remove()
41 #    (>)  大于 - $gt
42 #    (<)  小于 - $lt
43 #    (>=)  大于等于 - $gte
44 #    (<= )  小于等于 - $lte
45 #a = db[table]
46 #print a.find_one()"""
47 
48 
49 
50 #SQLSERVER
51 """import pyodbc
52 import MySQLdb
53 MSSQL_INFO = {"hostname":"localhost","username":"","password":"","dbname":"oneice"}
54 strconn= 'DRIVER={SQL Server};SERVER='+MSSQL_INFO.get("hostname")+';DATABASE='+MSSQL_INFO.get("dbname")+';UID='+MSSQL_INFO.get("username")+';PWD='+MSSQL_INFO.get("password")
55 db = pyodbc.connect(strconn)
56 sqldb = db.cursor()
57 #查询
58 sql = 'select * from news where news_id=1'
59 #添加
60 sql ="insert into news (news_title,news_author,news_summary,news_content,news_pic) values ('haha','happy','Iriji','little','12dsa')"
61 #删除
62 sql ="delete from news where news_id=5"
63 sqldb.execute(sql)
64 sqldb.commit()
65 #查询
66 row = sqldb.fetchone()
67 print row[1]
68 #存储过程
69 sqldb.execute("{call 存储过程名字 (参数)}", '上传的参数')
70 q = sqldb.fetchone()/fetchall()
71 sqldb.commit()
72 if q:
73     print q[1]"""

这里包含这Python调用SQLSERVER的存储过程和基本操和MONGODB的基本操作!

Welcome to Python world! I have a contract in this world! How about you?
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
17天前
|
存储 Go API
使用GoFrame连接和操作TDengine时序数据库
通过使用GoFrame框架和TDengine Go驱动,我们可以方便地连接和操作TDengine时序数据库。无论是插入、查询还是分析时序数据,都可以通过简单的API调用来实现。GoFrame提供了强大的Web开发功能,结合TDengine的高性能时序数据存储和查询能力,可以构建高效、可扩展的时序数据应用。
|
18天前
|
数据采集
Haskell爬虫:连接管理与HTTP请求性能
Haskell爬虫:连接管理与HTTP请求性能
|
21天前
|
数据采集 存储 搜索推荐
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。
|
14天前
|
NoSQL 关系型数据库 PHP
php连接数据库
要使用PHP连接PolarDB或MongoDB数据库,需先准备连接信息,并编写相应代码。对于PolarDB,需设置主机地址、端口、数据库名及凭据,使用`pg_connect`函数建立连接;而对于MongoDB副本集,需安装MongoDB PHP驱动,通过`MongoDB\Client`连接指定的副本集实例。请确保替换示例代码中的占位符为实际值,并正确配置副本集名称和主机信息。更多详细信息与示例代码,请参考相关链接。
125 72
|
6天前
|
消息中间件 关系型数据库 数据库
Python实时监测数据库表数据变化的方法
在实现时,需要考虑到应用的实时性需求、数据库性能影响以及网络延迟等因素,选择最适合的方法。每种方法都有其适用场景和限制,理解这些方法的原理和应用,将帮助开发者在实际项目中做出最合适的技术选择。
45 17
|
3天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
18 3
|
3天前
|
数据采集 API 开发者
🚀告别网络爬虫小白!urllib与requests联手,Python网络请求实战全攻略
在网络的广阔世界里,Python凭借其简洁的语法和强大的库支持,成为开发网络爬虫的首选语言。本文将通过实战案例,带你探索urllib和requests两大神器的魅力。urllib作为Python内置库,虽API稍显繁琐,但有助于理解HTTP请求本质;requests则简化了请求流程,使开发者更专注于业务逻辑。从基本的网页内容抓取到处理Cookies与Session,我们将逐一剖析,助你从爬虫新手成长为高手。
19 1
|
12天前
|
数据采集 机器学习/深度学习 搜索推荐
Python爬虫技术基础与应用场景详解
本文介绍了爬虫技术的基本概念、原理及应用场景,包括数据收集、价格监测、竞品分析和搜索引擎优化等。通过一个实战案例展示了如何使用Python爬取电商网站的商品信息。强调了在使用爬虫技术时需遵守法律法规和道德规范,确保数据抓取的合法性和合规性。
|
21天前
|
SQL Java 数据库连接
Java开发者必知:JDBC连接数据库的“三大法宝”
Java开发者必知:JDBC连接数据库的“三大法宝”
17 7
|
24天前
|
存储 前端开发 关系型数据库
秀啊,用Python快速开发在线数据库更新修改工具
秀啊,用Python快速开发在线数据库更新修改工具