python爬虫保存文件(python 爬虫 下载文件)

http://www.itjxue.com  2023-03-28 09:39  来源:未知  点击次数: 

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爬取网页数据,为啥保存到Excel里面没有东西?

如果您使用 Python 从网页中抓取数据并将其保存到 Excel 文件,但 Excel 文件不包含任何数据,则可能有多种原因。以下是一些可能的原因和解决方案:

您没有使用正确的方法将数据写入 Excel 文件。若要将数据保存到 Excel 文件,需要使用库,例如 或 。这些库提供可用于创建和写入 Excel 文件的函数和类。确保已导入正确的库,并使用正确的方法将数据写入文件。openpyxlxlsxwriter

将数据写入 Excel 文件后,您不会保存该文件。将数据写入 Excel 文件后,需要使用 or 方法保存对文件的更改。如果不保存文件,则不会保留写入文件的数据。save()save_as()

您没有在正确的模式下打开 Excel 文件。使用 Python 打开 Excel 文件时,需要指定是要读取文件还是写入文件。如果以只读模式打开文件,则无法向其写入数据。确保在写入模式下打开文件,在调用该方法时使用该选项。write_onlyopen()

您没有将数据写入 Excel 文件中的正确工作表。一个 Excel 文件可以包含多个工作表,您需要指定要将数据写入哪个工作表。请确保在调用 or 方法将数据写入 Excel 文件时使用正确的工作表名称。append()write()

回答不易望请采纳

python爬虫:如何爬网页数据并将其放在文本

用requests库

r=r.requests.get(url)

r.concent

保存到文件里就行了

python爬虫怎么把csv文件保存到指定路径

用控制台还真没试过,如果是用脚本来保存的话就是在open那里给定文件的绝对路径就可以了。如果是没用with的话,要记得把文件close掉,不然会占用系统资源的。

with open(" xxx/xxx/xxx. csv","w"):

要输入的内容

4.python爬虫之新建 scrapy 爬虫项目(抓取和保存)

1.win10 下 win + r 打开cmd 切换新项目的目录

2.新建scrapy项目的命令:

可以利用pycharm 打开项目文件夹编辑项目

3.items.py

声明爬取的字段

4.新建scrapy 爬虫

用命令 scrapy genspider doubanmovie "movie.douban.com" 创建爬虫。

5.运行爬虫

5.1 创建运行脚本

(一)、在 scrapy.cfg 同级目录下创建 pycharm 调试脚本 run.py,避免每次运行爬虫输入密码,内容如下:

6.修改robottxt协议

修改 settings 中的 ROBOTSTXT_OBEY = True 参数为 False,因为默认为 True,就是要遵守 robots.txt 的规则, robots.txt 是遵循 Robot协议 的一个文件,它保存在网站的服务器中,它的作用是,告诉搜索引擎爬虫,本网站哪些目录下的网页不希望你进行爬取收录。在 Scrapy 启动后,会在第一时间访问网站的 robots.txt 文件,然后决定该网站的爬取范围。查看 robots.txt 可以直接网址后接 robots.txt 即可。

一般构建爬虫系统,建议自己编写Item Pipeline,就可以在open(path)选择自己的保存路径

参考: # scrapy爬虫事件以及数据保存为txt,json,mysql

7.1保存为json格式时出现乱码的解决方式:

scrapy抓取豆瓣书籍保存json文件乱码问题

中文默认是Unicode,如:

\u5317\u4eac\u5927\u5b66

在setting文件settings.py中设置:

就可以解决了

第二种解决办法

或在cmd中传入 -s FEED_EXPORT_ENCODING='utf-8'

参考:

(责任编辑:IT教学网)

更多

推荐Dreamweaver教程文章