CSSセレクター ”table > tbody > tr” が lxml で動きません
https://eiga.com/theater/13/
のサイトから、映画館の名前と住所を取得したいと思って、参考書を元にこのように書いてみました。
しかし以下のように表示され、住所が表示されません。
{'url': 'https://eiga.com/theater/13/130301/3271/', 'name': ['アップリンク'], 'address': []}
どのようにすればいいのかお手上げなので、ぜひアドバイスをいただけないでしょうか?どうぞよろしくお願いします。
import time
import re
import requests
import lxml.html
def main():
session = requests.Session()
response = requests.get('https://eiga.com/theater/13/')
urls = scrape_list_page(response)
for url in urls:
time.sleep(1)
response = session.get(url)
theater = scrape_detail_page(response)
print(theater)
break
def scrape_list_page(response):
root = lxml.html.fromstring(response.content)
root.make_links_absolute(response.url)
for a in root.cssselect('#pref_theaters a'):
url = a.get('href')
yield url
def scrape_detail_page(response):
root = lxml.html.fromstring(response.content)
theater = {
'url': response.url,
'name': [h2.text_content() for h2 in root.cssselect('#main > div.wrap_ctsBox > div > h2')],
'address': [td.text_content() for td in root.cssselect('#ciBox > table > tbody > tr:nth-child(1) > td')],
}
return theater
if __name__ == '__main__':
main()