求助, Python 爬虫数据储存 MySQL 问题

2018-07-11 11:59:38 +08:00
 luboyan

疑问: 用 Python 抓取网页数据时,每一个网页对应返回的数据为 json 格式,但是需要的三组数据分别数据两个 key 下,既 A,B 在字段 content 下,C 在字段 url 下,如何循环抓取 A,B,C,并插入到 MySQL ? 我的做法: 1.构造要抓取的网页,用 for 循环从列表中随机选取一个值,和主 url 相加构造; 2.爬取各个构造后的网址,获取到 json,用 for 循环取出 url 字段下的 C 值放入列表 L 中,用 re 取出 content 字段下的 A,B 值,但是取出后 A,B,C 三个值(他们是一一对应的关系)并没有在一起,我应该如何构造让他们在一起,我用 i=0 yield 返回{'title':result[0],'img':[1],'url':L[i]} i=i+1 然后调用 pymysql 函数插入到 MySQL 中。 问题: 按上述做法不可以正确插入到 MySQL 中,上网查询后,准备采用 json 或者 dict 插入,可是应该如何构造出 json 或者 dict. 不知道我的表述有没有把问题说清楚,自学 Python 中,都不知道从那个方面去考虑问题,迭代我觉得需要,只是看不懂怎么弄。

2459 次点击
所在节点    Python
4 条回复
hubqin
2018-07-11 12:49:16 +08:00
先看官网 https://pymysql.readthedocs.io/en/latest/user/examples.html 给出的例子:
```
# Create a new record
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
```
先拼接出一个 sql,再将各字段的值按顺序组成一个元组(tuple),传入到 execute 函数中。
这里是我封装的 pymysql 的操作,可供参考: https://github.com/HubQin/sinaCrawlerV/blob/master/database.py
思路是:将数据组成字典,比如,kw = {}, kw['a']=1,kw['b']=2,...最后以**kw 的形式传入函数, 传入的数据按上面的方式拼装出 sql 和各字段值的元组,最后传入 execute 函数执行插入操作。
Leiothrix
2018-07-11 17:35:33 +08:00
如果是 Scrapy,请使用 meta。
luboyan
2018-07-11 20:04:49 +08:00
@hubqin 谢谢你,一直忙于工作,等有时间好好研究下你说的方法,十分感谢
luboyan
2018-07-11 20:05:58 +08:00
@Leiothrix 同时也谢谢你,虽然还没用 Scrapy,以后有机会学习下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/469860

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX