我是网络抓取的新手,请原谅我的术语可能含糊不清:|
我正在尝试为其编写蜘蛛的 HTML 页面片段:
<h3>2019 General Meetings</h3>
<p><strong>Group 20:</strong> <br />Wednesday, June 5, 9 a.m. <br /> Bank & Trust, 10000 E. Western Ave.</p>
<p>Wednesday, July 11, 9 a.m. <br />Bank & Trust, 10000 E. Western Ave.</p>
<p><strong>Group 20:</strong> <br />Monday, July 8, 9 a.m.<br />Hubbard, 1740 W. 199th St.</p>
<p> </p></div>
我试图遵循的逻辑是:
我有 <h3> 这是“顶级”(或者至少我认为它是),页面上还有其他 h3,所以我需要确保只有这个<h3> 被传递给以下解析器。
对于上述情况,我正在使用
response_items = response.xpath("//h3[contains(@h3, 'General Meetings')]")
而且我认为我有它的工作。(但需要更多测试才能确定。)
我需要将每个 <p> 传递给类中的相应解析器,并且每个都应返回有关会议的所需信息,例如
_parser_date
将返回日期,_parser_address
将返回地址,然后继续。
我无法为此找到正确的scrapy/xpath语法。在https://docs.scrapy.org/en/latest/topics/selectors.html之后,我无法让它很好地工作。
我对每个解析器特别感兴趣,以“拾取”它要解析的 <p> 中的模式,如果它是日期模式,则对其进行格式化,然后返回。如果它是一个位置模式......等等。
我试图避免使用re.()
,除非您建议在这里这样做是正确的。任何见解都将受到欢迎,谢谢。