Python中的Web Scraper格式

时间:2016-04-26 16:39:18

标签: python excel beautifulsoup xlsxwriter

所以我正在抓取一个网页来收集一些信息,然后希望将这些信息放在Excel表格中。我完成了这部分。我正在努力的部分是在A列中写入与B列中所有数据相关的标题。所以我想打印新数据开始位置旁边的标题。这是html:

<div class="result">
<span class="number"><a href="####">####
  <span class="d" id="number">
  </span>
</span></a> 
<div class="rm">
<span class="detail"><span class="cloud" title="system"></span> information</span>
<span class="detail"><span class="marker" title="location"></span> information</span>
  <br/>
<span class="detail"><span class="cog" title="public"></span> information</span>
  <br/>
<span class="detail"><span class="lock" title="name"></span> information</span>
    <br/>
</div>
  <span class="default">word</span>

所以当有多个名为“rm”的类时会出现问题。我能想到两种解决方案但似乎无法获得代码。基本上我想要B列中的系统,位置,公共和名称,然后是A列中的数字。然后,一旦下一个“rm”div到来,我希望数字位于新信息旁边的单元格中。我可以计算每个rm div有多少“细节”跨度,或者我可以打印整个类“结果”。打印整个类“结果”的唯一问题是所有信息都进入一个单元格,我需要将它分离出来。任何帮助表示赞赏!

i = br.open(url).read()
soup = BeautifulSoup(i)
div = soup.findAll('span', attrs={"class":"detail"})
idiv = soup.findAll('span', attrs={"class":"number"})
for val in idiv:
    worksheet.write(counter,0,val.text)
    counter += 1
for val2 in div:
    worksheet.write(row,1,val2.text)
    row += 1

因此,此代码的结果就是数字在A列中逐个列出的位置,而信息就在其中,就像我想要的那样。问题是我希望数字位于信息开始的旁边。

0 个答案:

没有答案