求帮我修改一下爬虫,能把它改成多线程的吗?初学 py!求帮帮忙,找的别人的源码!

2015-01-15 13:08:44 +08:00
 POP
# -*- coding: utf-8 -*-
import urllib2
import sys
#BeautifulSoup3不需要修改,BeautifulSoup4,改成from bs4 import BeautifulSoup
from BeautifulSoup import BeautifulSoup

reload(sys)
sys.setdefaultencoding( "utf-8" )

def getcontent(url):
print url
req = urllib2.Request(url)
res = urllib2.urlopen(req)
magnetlist=[]
html = res.read()
res.close()
soup = BeautifulSoup(html)
#BeautifulSoup3不需要修改,BeautifulSoup4,改成soup.find_all('a')
allentry=soup.findAll('a')
for link in allentry:
if "magnet:"==link.get('href')[0:7]:
magnetlist.append(link.get('href'))
magnetlist = [line+'\n' for line in magnetlist]
f =open("magnet.txt", "a")
f.writelines(magnetlist)
f.close()

def main():
site="http://bt.shousibaocai.com/search/"
keyword="地心引力"
keyword=urllib2.quote(keyword)
#总共抓前多少页
page=3
for i in range(1,page):
searchurl=site+keyword+"/"+str(i)
getcontent(searchurl)

if __name__ == '__main__':
main()
#end Jarett
4289 次点击
所在节点    Python
27 条回复
Delbert
2015-01-16 00:15:38 +08:00
@surewen 已经支持。右边的入口是md的,正常的入口是没有md的。要贴代码用gist。
pandada8
2015-01-16 00:23:45 +08:00
@lxkaka 爬虫基本是IO型,用多线程基本就够啦
wezzard
2015-01-16 01:29:29 +08:00
你們都中招了,樓主是來黑Python的!
icedx
2015-01-16 02:08:57 +08:00
如果楼主不想深入学多* 程的哲学 可以试试map()
ivanlw
2015-01-16 02:36:52 +08:00
原来不只有我一个人看没有缩进的代码很累呀……怪不得天然适合python……
xylophone21
2015-01-16 15:27:00 +08:00
把range(1,page):这里的1,page两个参数改为从argc获取
然后shell多启几个
不会shell的话手动启也行,反正你也不会想要太多进程的.
POP
2015-01-16 15:31:44 +08:00
@xylophone21 这都行!厉害!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/162375

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX