Python:刮掉游戏名称

时间:2016-10-20 09:57:54

标签: python web python-requests screen-scraping analysis

我遇到问题从网页上删除游戏名称 它返回一个空白数组..一旦名称被删除,我希望它被写入一个新创建的文本文件..我的代码应该在下面..它远未完成,但我确定我将需要一个While条件.. < / p>

def ScrapeK10():
siteToScrape = 'http://www.kiz10.com/new-games'
print '\n[!] Requesting Kiz10..'
kizReq = requests.get(siteToScrape)
print '\n[!] Scraping Newest Games...'
kizTree - html.fromstring(kizReq.content)
kizElement = kizTree.xpath('//strong[@class="bx-caption"]/text()')
print 'Latest Games : ', kizElement, '\n'
return

我遇到的问题是我得到一个空白数组,所以我不确定我是否真正正确地抓取网站甚至使用正确的xpath?

还有点新鲜......不想使用美丽的汤也不想使用Scapy ..

但是我的目标是在我给出的网页上抓取所有游戏名称,然后将它们写入新文件..

1 个答案:

答案 0 :(得分:0)

你能使用正则表达式吗? 请注意,所有游戏名称都包含在名为“itemsGame”的JavaScript对象中。

使用正则表达式对其进行过滤,然后再次使用正则表达式来分割每一行。

这应该这样做

def main():
    import re
    import requests
    url = "http://kiz10.com/index.php?page=newgames"
    raw = requests.get(url).content
    match = re.search("var itemsGame = \[(.*?)\];$", raw, re.M)
    for line in re.findall('\[(.*?)\]', match.group(1)):
        print(line.replace("'", "").split(",")[3].strip())

或者你可以从var itemsGame =调用字符串上的eval() 到下一个\ n角色。

显然,eval始终是危险的,从未真正推荐