V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
luboyan
V2EX  ›  Python

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

  •  
  •   luboyan · 2018-07-11 11:59:38 +08:00 via Android · 2456 次点击
    这是一个创建于 2326 天前的主题,其中的信息可能已经有所发展或是发生改变。

    疑问: 用 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 中,都不知道从那个方面去考虑问题,迭代我觉得需要,只是看不懂怎么弄。

    4 条回复    2018-07-11 20:05:58 +08:00
    hubqin
        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 函数执行插入操作。
    Leiothrix
        2
    Leiothrix  
       2018-07-11 17:35:33 +08:00
    如果是 Scrapy,请使用 meta。
    luboyan
        3
    luboyan  
    OP
       2018-07-11 20:04:49 +08:00
    @hubqin 谢谢你,一直忙于工作,等有时间好好研究下你说的方法,十分感谢
    luboyan
        4
    luboyan  
    OP
       2018-07-11 20:05:58 +08:00
    @Leiothrix 同时也谢谢你,虽然还没用 Scrapy,以后有机会学习下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2876 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:20 · PVG 19:20 · LAX 03:20 · JFK 06:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.