私は1つの関数で小さなWebクローラーを作った、upso_finalです。python print()は私が期待しているものを出力しません
私がprint(upso_final())
の場合、タイトル、住所、電話番号を含む15のリストが得られます。しかし、タイトルのみを印刷したいので、変数のタイトルをグローバル文字列にしました。私がそれを印刷するとき、私は唯一のタイトル、実行の最後の1つを得る。私は15タイトルすべてを手に入れたい。
from __future__ import unicode_literals
import requests
from scrapy.selector import Selector
import scrapy
import pymysql
def upso_final(page=1):
def upso_from_page(url):
html = fetch_page(url)
sel = Selector(text=html)
global title,address,phone
title = sel.css('h1::text').extract()
address = sel.css('address::text').extract()
phone = sel.css('.mt1::text').extract()
return {
'title' : title,
'address' : address,
'phone' : phone
}
def upso_list_from_listpage(url):
html = fetch_page(url)
sel = Selector(text=html)
upso_list = sel.css('.title_list::attr(href)').extract()
return upso_list
def fetch_page(url):
r = requests.get(url)
return r.text
list_url = "http://yp.koreadaily.com/list/list.asp?page={0}&bra_code=LA&cat_code=L020502&strChar=&searchField=&txtAddr=&txtState=&txtZip=&txtSearch=&sort=N".format(page)
upso_lists = upso_list_from_listpage(list_url)
upsos = [upso_from_page(url) for url in upso_lists]
return upsos
upso_final()
print (title,address,phone)
あなたは 'print'を1つしか持っていないので、ループには入っていないので、1行の出力しか得られません。あなたのロジックにはいくつかの作業が必要です。 –
解決に至ったときは、有用なものを優先して投票し、好きな答えを受け入れることを覚えておいてください。そうすれば、Stack Overflowは問題を適切にアーカイブすることができます。 – Prune