Python lxml webscraping Google只打印空列表

时间:2015-01-18 03:26:02

标签: python web-scraping lxml python-requests

我已经四处寻找解决这个问题的办法,但对于我的生活,我无法弄明白!

这是我第一次尝试在python中编写任何内容,我希望我的脚本要做的是从文本文件中加载主题列表,生成Google搜索URL,然后逐个抓取这些URL以输出数量根据谷歌的'结果发现:'除了前15名结果的链接。

我的问题是,当我运行我的代码时,所有打印的都是空列表:

[]


[]


[]


[]


[]


[]


[]


[]


[]


[]


[]


[]


[]


[]


[]


[]


**END_OBJECT** 

..etc.

这是我的代码:

from lxml import html
import requests



def iterate():
    with open("list.txt", "r") as infile:
        for line in infile:
            if not line.strip():
                break
            yield line

output = open ("statistic_out.txt", "w")

for line in iterate():
    raw = line
    output.write(raw + " services")
    request = raw.replace(" ", "%20")
    page = requests.get('https://www.google.com.au/search?safe=off&tbs=ctr:countryAU&cr=countryAU&q=' + request + 'services%20-yellowpages%20-abs', verify=False)
    path = html.fromstring(page.text)
    #This will create a list of buyers:
    resultCount = path.xpath('//*[@id="resultStats"]/text()')
    #This will create a list of prices
    print(resultCount)
    print('\n')
    resultUrlList1 = path.xpath('//*[@id="rso"]/div[2]/li[1]/div/h3/a/text()')
    resultUrlList2 = path.xpath('//*[@id="rso"]/div[2]/li[2]/div/h3/a/text()')
    resultUrlList3 = path.xpath('//*[@id="rso"]/div[2]/li[3]/div/h3/a/text()')
    resultUrlList4 = path.xpath('//*[@id="rso"]/div[2]/li[4]/div/h3/a/text()')
    resultUrlList5 = path.xpath('//*[@id="rso"]/div[2]/li[5]/div/h3/a/text()')
    resultUrlList6 = path.xpath('//*[@id="rso"]/div[2]/li[6]/div/h3/a/text()')
    resultUrlList7 = path.xpath('//*[@id="rso"]/div[2]/li[7]/div/h3/a/text()')
    resultUrlList8 = path.xpath('//*[@id="rso"]/div[2]/li[8]/div/h3/a/text()')
    resultUrlList9 = path.xpath('//*[@id="rso"]/div[2]/li[9]/div/h3/a/text()')
    resultUrlList10 = path.xpath('//*[@id="rso"]/div[2]/li[10]/div/h3/a/text()')
    resultUrlList11 = path.xpath('//*[@id="rso"]/div[2]/li[11]/div/h3/a/text()')
    resultUrlList12 = path.xpath('//*[@id="rso"]/div[2]/li[12]/div/h3/a/text()')
    resultUrlList13 = path.xpath('//*[@id="rso"]/div[2]/li[13]/div/h3/a/text()')
    resultUrlList14 = path.xpath('//*[@id="rso"]/div[2]/li[14]/div/h3/a/text()')
    resultUrlList15 = path.xpath('//*[@id="rso"]/div[2]/li[15]/div/h3/a/text()')
    print(resultUrlList1)
    print('\n')
    print(resultUrlList2)
    print('\n')
    print(resultUrlList3)
    print('\n')
    print(resultUrlList4)
    print('\n')
    print(resultUrlList5)
    print('\n')
    print(resultUrlList6)
    print('\n')
    print(resultUrlList7)
    print('\n')
    print(resultUrlList8)
    print('\n')
    print(resultUrlList9)
    print('\n')
    print(resultUrlList10)
    print('\n')
    print(resultUrlList11)
    print('\n')
    print(resultUrlList12)
    print('\n')
    print(resultUrlList13)
    print('\n')
    print(resultUrlList14)
    print('\n')
    print(resultUrlList15)
    print('\n')
    print("**END_OBJECT** \n")

实际的HTML结构是任何Google搜索的结构: Html structure

任何帮助都会非常感激 - 因为我完全不知道为什么会这样。

编辑:

看来我的脚本正在点击谷歌的反机器人保护和路径。内容显示的信息是“这个页面检查是否真的是你发送请求,而不是机器人。”

我不确定是否有简单的方法可以绕过这个,但如果我发现任何内容会更新。

0 个答案:

没有答案