【发布时间】:2018-04-09 20:48:36
【问题描述】:
我使用 python 编写了一个刮板,用于从 yiffy 种子中刮取电影名称。该网页已遍历大约 12 页。如果我使用print 语句运行我的爬虫,它会给我所有页面的所有结果。但是,当我使用return 运行相同的内容时,它只会给我第一页的内容,而不是继续到下一页来处理其余部分。由于我很难理解 return 语句的行为,如果有人指出我哪里出错并给我一个解决方法,我会很高兴。提前致谢。
这就是我正在尝试的(完整代码):
import requests
from urllib.request import urljoin
from lxml.html import fromstring
main_link = "https://www.yify-torrent.org/search/western/"
# film_storage = [] #I tried like this as well (keeping the list storage outside the function)
def get_links(link):
root = fromstring(requests.get(link).text)
film_storage = []
for item in root.cssselect(".mv"):
name = item.cssselect("h3 a")[0].text
film_storage.append(name)
return film_storage
next_page = root.cssselect(".pager a:contains('Next')")[0].attrib['href'] if root.cssselect(".pager a:contains('Next')") else ""
if next_page:
full_link = urljoin(link,next_page)
get_links(full_link)
if __name__ == '__main__':
items = get_links(main_link)
for item in items:
print(item)
但是,当我喜欢下面的内容时,我会得到所有结果(仅限粘贴的要点部分):
def get_links(link):
root = fromstring(requests.get(link).text)
for item in root.cssselect(".mv"):
name = item.cssselect("h3 a")[0].text
print(name) ## using print i get all the results from all the pages
next_page = root.cssselect(".pager a:contains('Next')")[0].attrib['href'] if root.cssselect(".pager a:contains('Next')") else ""
if next_page:
full_link = urljoin(link,next_page)
get_links(full_link)
【问题讨论】:
标签: python python-3.x web-scraping return