赞
踩
爬取当当网的图书信息
话不多说首先咱先看看网站就就是这个样子
我们需要获取到他的:书名,链接,价格,评论数并存到数据库中
网站链接: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替换就好了。
总结:第一次写博客,可能排版不太好看,请多指教。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。