第三篇,将爬虫爬取下来的列表数据转换为字符串形式存入数据库中

了解思路

第一篇爬虫是将获取到的数据以列表的方式保存下来的,后面为了方便数据清洗,我就将他改为字符串形式输出。

列表转换为字符串有这几种方法:

1.使用replace方法

a = ['123条评论']
aa = str(a)
b = aa.replace("条评论",'')
print(b)

2.替换元素

aaa = ['黑色', '红色', '白色', '黑色']
bbb = ['黄色' if i == '黑色' else i for i in aaa]
print(bbb)

3.替换多种元素

aaa = ['黑色', '红色', '白色', '黑色']
ccc = ['黑色', '红色']
bbb = ['黄色' if i in ccc  else i for i in aaa]
print(bbb)

4.替换多个元素

aaa = ['黑色', '红色', '白色', '黑色']
ccc = {'黑色': '黄色', '红色': '白色'}
bbb = [ccc[i] if i in ccc else i for i in aaa]
print(bbb)

5.使用正则表达式的sub方法

c = ['¥112.60']
e = str(c)
d = re.sub("¥",'',e)
print(d)

正则表达式的话,去循环遍历的时候他的第一个元素会是[,显然不是我们要表达的效果。
在这里插入图片描述在这里插入图片描述具体的有什么问题可以参考列表转换字符串

最后

所以这里我们使用replace的方法进行替换,先使用xpath获取到列表数据,再进行循环遍历转换为字符串的形式之后使用replace的方法替换字符串中的元素,全部代码如下:

import requests
from lxml import etree
import pymysql

a = input('请输入你想要查找的书籍:')
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0'}
for i in range(1, 10):
    url = 'http://search.dangdang.com/?key='+str(a)+'&act=input&page_index=' + str(i)
    response = requests.get(url, headers=headers)
    text = response.text
    html = etree.HTML(text)
    quan = html.xpath('//ul[@class="bigimg"]/li')
    for x in quan:
        name = x.xpath('.//p[@name="title"]/a/@title')
        href = x.xpath('.//p[@name="title"]/a/@href')
        money1 = x.xpath('.//span[@class="search_now_price"]/text()')
        comment1 = x.xpath('.//a[@name="itemlist-review"]/text()')
        conn = pymysql.connect('127.0.0.1', 'root', '123456', 'dd', charset='utf8')
        cur = conn.cursor()
        for a in range(len(name)):
            print(name[a])
            money = money1[a].replace("¥",'')
            comment = comment1[a].replace("条评论",'')
            sql = 'insert into bb(title,link,money,comment) VALUES("%s","%s","%s","%s")'
            cur.execute(sql % (name[a], href[a], money,comment))
            cur.close()
            conn.commit()
        conn.close()

注意,这里我新建了一个数据库bb来保存,里面的name跟href都用varchar的格式写入,money跟comment都用int的格式写入。
最后,这篇为昨天补的,昨天兼职有点累了就没来的急写,有什么问题欢迎讨论。今日依旧是个卑微打工仔。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要连接到数据库,并创建一个表来存储接收到的字符串。可以使用以下代码: ``` import mysql.connector # 连接到数据库 mydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="yourdatabase" ) # 创建一个表来存储接收到的字符串 mycursor = mydb.cursor() mycursor.execute("CREATE TABLE received_strings (id VARCHAR(255) PRIMARY KEY, string VARCHAR(255))") ``` 接下来,你需要编写代码来将接收到的字符串插入到数据库。可以使用以下代码: ``` import socket import mysql.connector # 连接到数据库 mydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="yourdatabase" ) # 创建一个socket并监听端口 s = socket.socket() host = socket.gethostname() port = 12345 s.bind((host, port)) s.listen(5) while True: # 接收客户端的连接 c, addr = s.accept() print('Got connection from', addr) # 接收客户端发送的字符串 string = c.recv(1024).decode('utf-8') print('Received string:', string) # 将接收到的字符串插入到数据库 sql = "INSERT INTO received_strings (id, string) VALUES (%s, %s)" val = (string, string) mycursor = mydb.cursor() mycursor.execute(sql, val) mydb.commit() print(mycursor.rowcount, "record inserted.") # 关闭连接 c.close() ``` 在这个代码,我们使用了Python的Socket模块来接收客户端发送的字符串,并将其存储到MySQL数据库。我们为接收到的字符串创建了一个主键,并将其与字符串一起插入到数据库。最后,我们关闭了与客户端的连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值