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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43779803/article/details/102752637

了解思路

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

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

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的格式写入。
最后,这篇为昨天补的,昨天兼职有点累了就没来的急写,有什么问题欢迎讨论。今日依旧是个卑微打工仔。

猜你喜欢

转载自blog.csdn.net/weixin_43779803/article/details/102752637