使用scrapy来抓取xml网页

时间:2013-08-08 01:48:37

标签: python scrapy web-crawler

我需要抓取xml页面http://www.10why.net/sitemap.xml 这只是我想要的网址表

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
import re

thename = "sitemap"

class ReviewSpider(BaseSpider):
    name = thename
    allowed_domains = ['10why.net']
    start_urls = ['http://www.10why.net/sitemap.xml']

    def parse(self, response):
        hxs = HtmlXPathSelector(response)

        content = hxs.select('//table[@cellpadding="5"]/tbody//a')

        print content
        for c in content:


            file = open('%s.txt' % thename, 'a')
            file.write("\n")
            file.write(c)
            file.close()

打印的内容是[](空列表) 我用来能够在普通的html页面而不是站点地图xml页面上抓取东西。请帮我。 PS:我出于其他原因自己写文件。

1 个答案:

答案 0 :(得分:1)

我猜这是因为您正在查看浏览器用于显示 XML的HTML而不是来自服务器的原始XML。当我查看给定的URL时,我看到类似于以下的XML结构:

<urlset>
   <url>
      <loc>http://www.10why.net/20130321/bb-nuan/</loc>
      <lastmod>2013-03-21T01:51:31+00:00</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.2</priority>
   </url>
</urlset>

您可能希望使用更像的XPath表达式:

//urlset/url/loc

获取站点地图中的所有网址。