【问题标题】:Crawling table with scrapy, site has unusual html code.用scrapy抓取表格,网站有不寻常的html代码。
【发布时间】:2019-03-22 18:24:15
【问题描述】:

第一次发帖。我感谢任何指导,并迫不及待地想回馈社区。

我正在尝试使用 scrapy 制作一个爬虫,以从该表中收集数据。

http://www.wikicfp.com/cfp/call?conference=machine%20learning

具体来说,会议名称、地点和日期。但是表、tr 和 td 没有类,并且表在另一个表中。

无论我如何编辑我的代码,它总是给我整个页面。

import scrapy


class CfpspiderSpider(scrapy.Spider):
name = 'cfpspider'
allowed_domains = ['http://www.wikicfp.com']
start_urls = ['http://www.wikicfp.com/cfp/call?conference=machine%20learning']

def parse(self, response):
    div = response.css("div.contsec")

    for table in div:
        print(table.css("table")[3].css.extract_first())

稍后,我将努力使其移至下一页并输出 csv 或 json,但现在我试图获取此表的部分内容。我在scrapy shell中测试了一些命令,但是我的知识很缺乏。 谢谢

【问题讨论】:

    标签: python html scrapy web-crawler


    【解决方案1】:

    从源码看,页面的结构是这样的:

    div class="contsec"
    | center
    | | form
    | | | table
    | | | | tr
    | | | | tr
    | | | | tr
    | | | | | td
    | | | | | | table id="the droids you are looking for"
    | | | | tr
    

    编辑:试试这个

    def parse(self, response):
        divs = response.css("div.contsec")
        for div in divs:
                table = div.css("table")[3]
                headers = table.css("tr")[0].css("td::text").extract()
                # print("<table headers>")
                print("\t".join(headers))
                # print("</table headers>")
                for row in table.css("tr")[1:]:
                        row_data = row.css("td::text").extract()
                        print("\t".join(row_data))
    

    【讨论】:

    • 谢谢,但是您的代码输出的结果与我的原始代码相同吗?我做错了什么吗?
    • 相同的输出。这两张图片显示了外壳的开始和结束。 (有没有更好的方法在 cmets 中发布代码?)1drv.ms/u/s!Ah3mbRlpqEoglzAN2D0FvI2MJ6Ls1drv.ms/u/s!Ah3mbRlpqEoglzEygpIf-9wQeXMw
    • 我收到了响应消息,与类中基方法的签名不匹配。这是我的类,类 CfpspiderSpider(scrapy.Spider):
    • 我刚刚注意到另一个问题,他们将每一行分成两行并排在一起。
    • 它仍然给了我整个 div.contsec ,我将尝试快速重新制作 scrapy 包
    猜你喜欢
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 2013-05-09
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多