疑问: 用 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 中,都不知道从那个方面去考虑问题,迭代我觉得需要,只是看不懂怎么弄。
1
hubqin 2018-07-11 12:49:16 +08:00 1
先看官网 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, ('[email protected]', '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 函数执行插入操作。 |
2
Leiothrix 2018-07-11 17:35:33 +08:00
如果是 Scrapy,请使用 meta。
|