推荐学习书目
› 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
Colorful
V2EX  ›  Python

关于 scrapy 爬虫问题

  •  
  •   Colorful · Mar 8, 2020 · 3601 views
    This topic created in 2435 days ago, the information mentioned may be changed or developed.

    在 spiders 文件夹里面的一个文件

    def parse(self, response): # mtitem = MafengwoItem() datas = json.loads(response.body)#将 Json 格式数据处理为字典类型 datas = datas['html']

    datas 这块打印出来的信息是 html 的 就像这样的

    标题标题

    大概这样的 20 条信息,不是数组

    不知道怎么样获取 A 标签里面的数据,有用 for

    for data_item in titleall: mtitem['title'] = data_item.xpath("//a/@href").extract() #标题

    但这样获取到的值是空值,所以想请教一下
    
    小白一枚
    
    10 replies  •  2020-03-08 13:55:01 +08:00
    Colorful
    Colorful
    OP
    Mar 8, 2020
    1
    datas 这块打印出来的信息是 html 的 就像这样的

    <a class="item clearfix" href="*****" target="_blank">标题标题</a>

    就像这样的,大概 20 条吧
    我只是简写了而已,里面有一些标签什么的
    但获取到的数据不是数组,就是全部是 html
    zhzy
    zhzy
    Mar 8, 2020 via iPhone
    2
    就不能用 html 解析器吗……BeautifulSoup 之类的
    Colorful
    Colorful
    OP
    Mar 8, 2020
    3
    @zhzy 没用过了,我去网上找找
    nicevar
    nicevar
    Mar 8, 2020
    4
    描述的不是很清楚,response.body 是 json 数据?没必要用什么 BeautifulSoup,你要获取标题应该用 text 才是,不是 @href,这个是获取 url 的
    Colorful
    Colorful
    OP
    Mar 8, 2020
    5
    @nicevar json.loads(response.body) 出来的数据是 HTML,大概是这样的


    <a class="item clearfix" href="*****" target="_blank">标题标题</a>
    scdylk
    scdylk
    Mar 8, 2020 via iPhone
    6
    去标签内的文字 xpath 后面要加 text ()好 或者 string ()
    nicevar
    nicevar
    Mar 8, 2020
    7
    @Colorful 你用 json.loads 干啥, response 直接就能进行 xpath 操作了, 按你的要求筛选出 a 标签列表,直接挨个读取 a 标签的 text 就能拿到 title 了
    scdylk
    scdylk
    Mar 8, 2020 via iPhone
    8
    没打完…取属性的话 不用加 extract () 好像是这样 有段时间没用了
    tozp
    tozp
    Mar 8, 2020
    9
    xpath 是旧版的应用,现在都用新版了
    data_item.css('a::text').extract()就是获取 a 里面的所有数据,.extract_first()就是只获取第一个数据。
    Colorful
    Colorful
    OP
    Mar 8, 2020
    10
    @tozp 懂了,太感谢了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1839 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:36 · PVG 17:36 · LAX 01:36 · JFK 04:36
    ♥ Do have faith in what you're doing.