Python 如何创建一个更具活力的刮痧蜘蛛?
我是Python和Scrapy的新手,我正在研究一个CMS,它可以有多达16个容器,其中包含多达10个元素,我想进行刮取。有些网站没有启用全部10个元素,可能有5个。关于动态检查每个容器以检查其是否包含5到9、10个元素并能够正确调整XPath以获得正确的产出位置的循环,有哪些技巧和指导 如果我有10个项目的Scrapy脚本,出现9个项目,那么所有内容都被移到了错误的位置,这就是为什么我想为XPath合并一些条件,这5个元素也是如此 我有一些计算dl、dd和dt元素数量的代码,这样我就可以动态更新XPath,基本上Python 如何创建一个更具活力的刮痧蜘蛛?,python,scrapy,Python,Scrapy,我是Python和Scrapy的新手,我正在研究一个CMS,它可以有多达16个容器,其中包含多达10个元素,我想进行刮取。有些网站没有启用全部10个元素,可能有5个。关于动态检查每个容器以检查其是否包含5到9、10个元素并能够正确调整XPath以获得正确的产出位置的循环,有哪些技巧和指导 如果我有10个项目的Scrapy脚本,出现9个项目,那么所有内容都被移到了错误的位置,这就是为什么我想为XPath合并一些条件,这5个元素也是如此 我有一些计算dl、dd和dt元素数量的代码,这样我就可以动态更
countdlnodes = len(response.xpath(xpath_for_dl))
countdtnodes = len(response.xpath(xpath_for_dt))
在解析函数中,我有:
for dl_iterator in range (1, countdlnodes+1):
dlgrab = '/dl' + '[' + str(dl_iterator) + ']'
for dt_iterator in range(1, countdtnodes+1): #checking dt in each of the dl's
dtgrab1 = '/dt' + '[' +str(dt_iterator) + ']' #/dt[]
ddgrab = '/dd' + '[' +str(dt_iterator) + ']' #/dd[]
grabDTxpath = titleurlxpath + '/div/div[@class= "description"]'+ dlgrab + dtgrab1 + '/text()'
getdesctext = titleurlxpath + '/div/div[@class= "description"]' + dlgrab + ddgrab + '/text()'
#checkresp = response.xpath('//dl[1]/dt[1]/text()').get()
checkresp = response.xpath(grabDTxpath).get()
if checkresp == "text1:":
text1_SELECTOR = getdesctext #'/dl[1]/dd[1]/text()'
elif checkresp == "text2:":
text2_SELECTOR = getdesctext
elif checkresp == "text3:":
text3_SELECTOR = getdesctext
elif checkresp == "text4:":
text4_SELECTOR = getdesctext
elif checkresp == "text5:":
text5_SELECTOR = getdesctext
elif checkresp == "text6:":
text6_SELECTOR = getdesctext
elif checkresp == "text7:":
text7_SELECTOR = getdesctext
elif checkresp == "text8:":
text8_SELECTOR = getdesctext
elif checkresp == "text9:":
text9_SELECTOR = getdesctext
elif checkresp == "text10":
text10_SELECTOR = getdesctext
一页可能是这样的
<div class="details">
<dl>
<dt>Header</dt>
<dd>Description</dd>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
</dl>
<dl class="name1">
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
</dl>
<dl class="name2">
<dt></dt>
<dd></dd>
</dl>
</div>
标题
描述
第二个页面可能是这样的(在name1类中删除了一对dt和dd元素:
<div class="details">
<dl>
<dt>Header</dt>
<dd>Description</dd>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
</dl>
<dl class="name1">
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
</dl>
<dl class="name2">
<dt></dt>
<dd></dd>
</dl>
</div>
标题
描述
第三页可能是这样的
<div class="details">
<dl class="name1">
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
</dl>
<dl class="name2">
<dt></dt>
<dd></dd>
</dl>
</div>
为什么不使用
内容作为逻辑?将所有内容读入字典(使用
作为键,然后查找正确的值。为什么不使用
内容作为逻辑?将所有内容读入字典(使用
作为键,然后查找正确的值)。