第一篇博客,使用python爬虫爬取当当网数据存入数据库中

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

爬取当当网的图书信息

了解思路

话不多说首先咱先看看网站就就是这个样子
 网站我们需要获取到他的:书名,链接,价格,评论数并存到数据库中
网站链接:http://search.dangdang.com/?key=python&act=input&page_index=1
第一步:首先获取到整个网页的源码。
第二步:使用lxml模块获取到需要爬取的信息。
第三步:导入数据库模块pymysql(因为我用的是python3版本的所以是这个,如果你是python2就导入mysqldb模块,之后写入数据库中。

第一步

先把网页代码拿下来,如果被识别就往header里面添加cookie等,因为我观察网站key的值就是查找的图书,所以定义了一个变量a,方便输入要查询的书籍,page_index网站默认是1就是第一页,可以使用range方法输出9页,可以先获取一页的信息看看是否成功,别忘了导入request。

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)

第二步:

查看自己所需要爬取的数据
在这里插入图片描述很明显这里面不仅有我们要获取到的书名还有链接,再看看金额与评论数在这里插入图片描述在这里插入图片描述直接上代码:

    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')
        money = x.xpath('.//span[@class="search_now_price"]/text()')
        comment = x.xpath('.//a[@name="itemlist-review"]/text()')

这样就都可以获取了,注意别忘了导入lxml模块

第三步:

先导入数据库模块pymysql,之后链接数据库,使用insert into 表名字(列名…)values(name…),具体的数据库命令参照:MySQL操作命令

conn = pymysql.connect('127.0.0.1','root','123456','dd',charset='utf8')
        cur = conn.cursor()
        for a in range(len(name)):
            print(name[a])
            sql = 'insert into dd(title,link,money,comment) VALUES("%s","%s","%s","%s")'
            cur.execute(sql % (name[a],href[a],money[a],comment[a]))
            cur.close()
            conn.commit()
        conn.close()

在这里插入图片描述
最后执行一下,别忘了,数据库要新建数据库名为dd,表名为dd,里面列名都设置charvar,不然就会报错。这样看好像金额跟评论有点不好看,可以使用正则表达式的re.sub替换就好了。
总结:第一次写博客,可能排版不太好看,请多指教。

猜你喜欢

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