如何修复语法错误:不能在elemen上使用绝对路径

2024-09-19 12:12:07 发布

您现在位置:Python中文网/ 问答频道 /正文

import requests
from lxml import html


SEARCH_URL = "https://www.yellowpages.com/search"


def crawl(name, state, page=1):
    params={'search_terms': name, 'geo_location_terms': state, 'page': page}
    data = requests.get(SEARCH_URL, params=params).text
    tree = html.fromstring(data)
    for items in tree.xpath("//div[@class='info']"):
        name = items.findtext(".//span[@itemprop='name']")
        address = items.findtext(".//span[@class='street-address']")
        phone = items.findtext(".//div[@itemprop='telephone']")
        showing = items.findtext("//*[@id='main-content']/div[2]/div[4]/p/text()")


        yield (name, address, phone, showing)


def search(name, state, pages=1):
    page = 1
    while page is not pages:
        for result in crawl(name, state, page=page):
            print result
        page +=1


if __name__ == '__main__':
    search('pizza', 'tx', pages=10)

回溯:

^{pr2}$

Tags: nameimportdivurlsearchaddresshtmlpage
1条回答
网友
1楼 · 发布于 2024-09-19 12:12:07

问题出在这条线上:

showing = items.findtext("//*[@id='main-content']/div[2]/div[4]/p/text()")

crawl函数更改为:

^{pr2}$

它将产生以下结果:

(None, None, None, '1-30\nof 3030')
('Port "A" Pizzeria', '407 E Avenue G', '(361) 749-5226', '1-30\nof 3030')
("Palio's Pizza Cafe", '3492 Legacy Dr', '(214) 308-6895', '1-30\nof 3030')
('Pizza Inn', '1501 Magnolia Ave', '(409) 242-2870', '1-30\nof 3030')
("Papa Murphy's Take & Bake Pizza", '815 SW Alsbury Blvd', '(817) 447-6777', '1-30\nof 3030')
("Lane's", '630 Sabine St', '(409) 787-3838', '1-30\nof 3030')
("Little Ceasar's Pizza", '1000 N Midkiff Rd', '(432) 694-3676', '1-30\nof 3030')
('The Gaff', '323 Beach Ave', '(361) 749-5970', '1-30\nof 3030')
("CiCi's Pizza", '1440 N Highway 77', '(972) 937-1222', '1-30\nof 3030')
......

相关问题 更多 >