python爬虫爬取音乐并导入数据库中(python爬虫爬取音乐并导入数

http://www.itjxue.com  2023-03-30 01:13  来源:未知  点击次数: 

Python如何把爬虫爬的数据存到mongodb里

难道是img的问题。

mongodb是可以直接存的。这种写法没有问题。问题还是出在变量名与变量值上。

很简单就可以定位。你先将img换成一个字符串,如果成功了,就是img本身的格式问题。如果还不成可以试试将"id"换成"Identify"类似的这样的名子再式。2-3次试验就可以找到原因。

python爬虫爬下来的数据怎么导入到MySQL

去装一个 pymsql包

然后

import?pymysql??#导入pymsql模块

#链接数据库,注意port是int型,不是str,所以不要用引号

conn?=?pymysql.connect(

????????????????user='root',

????????????????password='root',

????????????????host='127.0.0.1',

????????????????port=3306,

????????????????database='test_demo',

????????????????use_unicode=True,

????????????????charset="utf8"

????????????)

#获取游标

cursor?=?conn.cursor()

#插入数据,注意看有变量的时候格式

cursor.execute("INSERT?INTO?tieba_user(`uuid`,`user_name`,`user_rank`,`user_level`,`level_status`,`tieba_name`)?VALUES?(%s,%s,%s,%s,%s,%s)",?(user_id,?user_name,?user_rank,?user_level,?level_statu,?tieba_name))

#提交

conn.commit()

#关闭连接

cursor.close()

类似这样

python爬虫数据存到非本地mysql

pymysql 基本使用 八个步骤以及案例分析

一.导入pymysql模块

导入pymysql之前需要先安装pymysql模块

方法一:直接在pycharm编译器里面输入 pip install pymysql

方法二:win+r -- 输入cmd --在里面输入pip install pymysql

ps:在cmd中输入pip list后回车 可以找到安装的pymysql就表示安装成功了

1

2

3

4

5

6

1

2

3

4

5

6

在pycharm编译器中导入

import pymysql

1

2

1

2

二.获取到database的链接对象

coon = pymysql.connect(host='127.0.0.1', user='root', password='123456', database='pymysql_test')

1

1

user:是你的数据库用户名

password:数据库密码

database:你已经创建好的数据库

1

2

3

1

2

3

三.创建数据表的方法

cursor.execute(

'''create table if not exists pets(id int primary key auto_increment,

src varchar(50),

skill varchar(100)''')

1

2

3

4

1

2

3

4

四.获取执行sql语句的光标对象

cousor = coon.cousor()

1

1

五.定义要执行的sql语句

1.sql的增加数据的方法

sql = '''insert into test_mysql(id,src,skill) values(%d,%s,%s)'''

1

1

ps: test_mysql 是你连接到的数据库中的一张表

id,src,skill 这个是你创建表时所定义的字段关键字

%d,%s,%s 这个要根据你创建的字段关键字的类型而定,记住要一一对应

1

2

3

1

2

3

2.sql的删除数据的方法

sql_1 = '''delete from test_mysql where src=%s;'''

1

1

3.sql的修改数据方法

sql_2 = '''update test_mysql set src=%s where skill=%s;'

1

1

4.sql的查询方法

sql_3 = '''select * from test_mysql where skill = %s'''

1

1

六.通过光标对象执行sql语句

1.执行增加数据的sql语句

cousor.execute(sql, [2, '', '000000'])

运行后在mysql的可视化后台就可以直观的添加的数据

1

2

1

2

2.执行删除数据sql语句

new = ''

cousor.execute(sql_1, [new])

PS:这里就是根据sql语句where后面的条件进行删除对应的数据

要记住传入的数据要与sql的where后面条件匹配

1

2

3

4

1

2

3

4

3.执行修改数据的sql语句

url = ''

pwd = '666666'

cousor.execute(sql_2,[pwd,url])

1

2

3

1

2

3

4.执行查询数据的sql语句

result1 = cousor.fetchone()

fetchone() 查询=整个表中的第一条数据,

如果再次使用就会查找到第二条数据,

还可以在括号内输入id值查询到相应的数据

result2 = cousor.fetchmany()

fetchmany()查询到表里的多条数据,

在括号里输入几就会查找到表的前几条数据

result2 = cousor.fetchall()

fetchall()查询到sql查询匹配到的所有数据

print(result)

用print输出语句就能直接打印输出所查询到的数据

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

**总结: 在执行sql语句要传入参数时,这个参数要以列表或者元组的类型传入**

1

1

七.关闭光标对象

cousor.close()

1

1

八.关闭数据库的链接对象

coon.cousor()

1

1

九.洛克王国宠物数据抓取案例

import requests

import pymysql

from lxml import etree

from time import sleep

# 数据库链接

conn = pymysql.connect(host='127.0.0.1', user='root', password='123456', database='pymysql')

cursor = conn.cursor()

# 执行一条创建表的操作

cursor.execute(

'''create table if not exists pets(id int primary key auto_increment,name varchar(50),src varchar(100),industry text)''')

url = ''

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'

}

response = requests.get(url=url, headers=headers)

response.encoding = 'gbk'

html = response.text

# print(html)

# 宠物名称

# 宠物图片(图片在 lz_src)

# 宠物技能(跳转详细页)

tree = etree.HTML(html)

li_list = tree.xpath('//ul[@id="cwdz_list"]/li') # 所有的宠物

for li in li_list:

name = li.xpath('./@name')[0] # 每一个宠物的名称

src = 'http:' + li.xpath('./a/img/@lz_src')[0] # 图片链接

link = '' + li.xpath('./a/@href')[0] # 宠物的详细链接

industry = [] # 数组里面存放每一个对象,每一个对象就是一个技能

# 对详细链接发起请求,获取技能

try:

detail_resp = requests.get(url=link, headers=headers)

sleep(0.5)

detail_resp.encoding = 'gbk'

detail_tree = etree.HTML(detail_resp.text)

# 技能

skills = detail_tree.xpath('/html/body/div[5]/div[2]/div[2]/div[1]/div[1]/table[4]/tbody/tr')

del skills[0]

del skills[0]

for skill in skills:

item = {}

item['name'] = skill.xpath('./td[1]/text()')[0] # 技能

item['grade'] = skill.xpath('./td[2]/text()')[0] # 等级

item['property'] = skill.xpath('./td[3]/text()')[0] # 属性

item['type'] = skill.xpath('./td[4]/text()')[0] # 类型

item['target'] = skill.xpath('./td[5]/text()')[0] # 目标

item['power'] = skill.xpath('./td[6]/text()')[0] # 威力

item['pp'] = skill.xpath('./td[7]/text()')[0] # pp

item['result'] = skill.xpath('./td[8]/text()')[0] # 效果

industry.append(item)

# print(industry)

# 数据保存 (mysql)

sql = '''insert into pets(name,src,industry) values (%s,%s,%s);'''

cursor.execute(sql, [name, src, str(industry)])

conn.commit()

print(f'{name}--保存成功!')

except Exception as e:

pass

cursor.close()

conn.close()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

十.总结

本章内容主要是给大家讲解一下在爬虫过程中如何将数据保存mysql数据库中去,

最后面这个案例就是一个示范,希望这篇文章能给大家带来帮助,都看到这里了给

个三连支持一下吧!!!

1

2

3

1

2

3

python 爬虫怎么处理爬取数据中含有单引号,并将其存入数据库

把爬到的数据用三引号接收再想办法处理呢

a="""aaa"aa"aa'aa'"""??#a为你实际爬到的数据

b?=?"""%s"""?%(a)

print?b?

#打印?'"aaa"aa"aa\'aa\''

Python爬虫:想听榜单歌曲?只需要14行代码即可搞定

虽然说XPath比正则表达式用起来方便,但是没有最方便,只有更方便。我们的BeautifulSoup库就能做到更方便的爬取想要的东西。

使用之前,还是老规矩,先安装BeautifulSoup库,指令如下:

其中文开发文档:

BeautifulSoup库是一个强大的Python语言的XML和HTML解析库。它提供了一些简单的函数来处理导航、搜索、修改分析树等功能。

BeautifulSoup库还能自动将输入的文档转换为Unicode编码,输出文档转换为UTF-8编码。

所以,在使用BeautifulSoup库的过程中,不需要开发中考虑编码的问题,除非你解析的文档,本身就没有指定编码方式,这才需要开发中进行编码处理。

下面,我们来详细介绍BeautifulSoup库的使用规则。

下面,我们来详细介绍BeautifulSoup库的重点知识。

首先,BeautifulSoup库中一个重要的概念就是选择解释器。因为其底层依赖的全是这些解释器,我们有必要认识一下。博主专门列出了一个表格:

从上面表格观察,我们一般爬虫使用lxml HTML解析器即可,不仅速度快,而且兼容性强大,只是需要安装C语言库这一个缺点(不能叫缺点,应该叫麻烦)。

要使用BeautifulSoup库,需要和其他库一样进行导入,但你虽然安装的是beautifulsoup4,但导入的名称并不是beautifulsoup4,而是bs4。用法如下:

运行之后,输出文本如下:

基础的用法很简单,这里不在赘述。从现在开始,我们来详细学习BeautifulSoup库的所有重要知识点,第一个就是节点选择器。

所谓节点选择器,就是直接通过节点的名称选择节点,然后再用string属性就可以得到节点内的文本,这种方式获取最快。

比如,基础用法中,我们使用h1直接获取了h1节点,然后通过h1.string即可得到它的文本。但这种用法有一个明显的缺点,就是层次复杂不适合。

所以,我们在使用节点选择器之前,需要将文档缩小。比如一个文档很多很大,但我们获取的内容只在id为blog的p中,那么我们先获取这个p,再在p内部使用节点选择器就非常合适了。

HTML示例代码:

下面的一些示例,我们还是使用这个HTML代码进行节点选择器的讲解。

这里,我们先来教会大家如何获取节点的名称属性以及内容,示例如下:

运行之后,效果如下:

一般来说一个节点的子节点有可能很多,通过上面的方式获取,只能得到第一个。如果要获取一个标签的所有子节点,这里有2种方式。先来看代码:

运行之后,效果如下:

如上面代码所示,我们有2种方式获取所有子节点,一种是通过contents属性,一种是通过children属性,2者遍历的结果都是一样的。

既然能获取直接子节点,那么获取所有子孙节点也是肯定可以的。BeautifulSoup库给我们提供了descendants属性获取子孙节点,示例如下:

运行之后,效果如下:

同样的,在实际的爬虫程序中,我们有时候也需要通过逆向查找父节点,或者查找兄弟节点。

BeautifulSoup库,给我们提供了parent属性获取父节点,同时提供了next_sibling属性获取当前节点的下一个兄弟节点,previous_sibling属性获取上一个兄弟节点。

示例代码如下:

运行之后,效果如下:

对于节点选择器,博主已经介绍了相对于文本内容较少的完全可以这么做。但实际的爬虫爬的网址都是大量的数据,开始使用节点选择器就不合适了。所以,我们要考虑通过方法选择器进行先一步的处理。

find_all()方法主要用于根据节点的名称、属性、文本内容等选择所有符合要求的节点。其完整的定义如下所示:

【实战】还是测试上面的HTML,我们获取name=a,attr={"class":"aaa"},并且文本等于text="Python板块"板块的节点。

示例代码如下所示:

运行之后,效果如下所示:

find()与find_all()仅差一个all,但结果却有2点不同:

1.find()只查找符合条件的第一个节点,而find_all()是查找符合条件的所有节点2.find()方法返回的是bs4.element.Tag对象,而find_all()返回的是bs4.element.ResultSet对象

下面,我们来查找上面HTML中的a标签,看看返回结果有何不同,示例如下:

运行之后,效果如下:

首先,我们来了解一下CSS选择器的规则:

1..classname:选取样式名为classname的节点,也就是class属性值是classname的节点2.#idname:选取id属性为idname的节点3.nodename:选取节点名为nodename的节点

一般来说,在BeautifulSoup库中,我们使用函数select()进行CSS选择器的操作。示例如下:

这里,我们选择class等于li1的节点。运行之后,效果如下:

因为,我们需要实现嵌套CSS选择器的用法,但上面的HTML不合适。这里,我们略作修改,仅仅更改

python爬虫将数据导入到mysql数据库时,报错_mysql_exceptions.programmingerror 1146

那肯定是因为你的insert语句里面的values有问题,这些值都为空,所以你返回结果行为None,你可以试着输出一下self.insertSql这个变量,看看输出来的结果是什么就知道了。

或者是你把values的值换成字符串,成功插入后再修改成变量,慢慢调试。

这种数据库操作的问题,最好是要好好检查下自己的sql语句。

(责任编辑:IT教学网)

更多

推荐CMS技巧文章