2011-09-22 22:07:00
引用:老井 D:\\laojing\\ http://www.fengyanforum.org/forum/search...s&uid=68如何获取不同作者的作者的搜索起始链接?
履虎尾 D:\\lvhuwei\\ http://www.fengyanforum.org/forum/search...ds&uid=68
忙总 D:\\wxmang\\ http://www.fengyanforum.org/forum/search...ads&uid=68
(09-22-2011 10:07 PM)瓦斯 提到: _缘由:
忙总的学识确实令人佩服,他可以在很短时间内就胸有成竹地写出一片完整的了好文来,连错别字都几乎找不到。
1、不止一位网友制作了忙总的文集,供大家免费下载,特别感动。不知道他们是手工还是编程完成,总之都要花费不少精力和时间。
2、看到Adol自己编程手机西西河的数据,也很感兴趣。
想自己也学一点这方面的技术,那就试着写一点小程序来自�......
#!/usr/bin/python
#_-*-_coding:_UTF-8_-*-
import_io,sys,re
import_urllib.request,_urllib.parse,_urllib.error_#Python3
from_urllib.request_import_FancyURLopener
from_html.parser_import_HTMLParser
from_io_import_StringIO
output_path="D:\\wxmang\\"
url_author="http://www.fengyanforum.org/forum/search.php?action=results&sid=5499aced95b497d5fb8a7f3f937b3ac2"
_#_搜索忙总所有主题帖子,搜索别人的修改此链接
def_get_web_content(url):
____myopener_=_FancyURLopener()__
____print("reading_%s..."_%(url))
____content_=_myopener.open(url).read().decode("utf-8")
____return_content
_
class_MyHTMLParser(HTMLParser):
____def___init__(self):_
________HTMLParser.__init__(self)
________self.text_=_StringIO()
________self.js=0
________self.links=[]
____def_handle_starttag(self,_tag,_attrs):
________if_tag=='a'_and_attrs:
____________link=attrs[0][1]
____________if_link_not_in_self.links_\
____________and_(("showthread.php?"_in_link_and_"page"_not_in_link_and_"lastpost"_not_in_link)_\
________________or_"search.php?"_in_link_and_"page"_in_link):
________________self.links.append(link)
____def_handle_data(self,_data):
________if_"<!--"_in_data:
____________#_print("js_tag_begin")
____________self.js=1
________elif_"-->"_in_data:
____________#_print("js_tag_end")
____________self.js=0
________else:_#_self.js==0:
____________self.text.write(data)
____def_get_text(self):
________return_self.text.getvalue()
____def_get_link(self):
________return_self.links
def_cleanline(line):
____line1=""
____while_1:
________line1=line.replace('\r\n\r\n\r\n','').replace('\t','').replace('\n\n\r','').replace('\r\n\r','').replace('\n\r\n','')
________if_line1!=line:
____________line=line1
________else:
____________break
____return_line1
________
def_save_list2file(filename,mylist):
____print("writing_%s_bytes_to_[_%s_]..."_%(len(mylist),filename))
____f_=_open(filename,"w")
____for_line_in_mylist:
________try:
____________f.write("%s"_%line)
________except_ValueError_as_e:
____________print(e)
____f.close()
____#_print("[_%s_]_closed."_%filename_)
____
def_save_url2file(output_path,url):
____content=get_web_content(url)
____title=content.splitlines()[3].replace("<title>","").replace("</title>","").replace(":","").lstrip()
____#获取主帖标题,当作文件名
____p=MyHTMLParser()_
____p.feed(content)
____text_=_cleanline(p.get_text())
____save_list2file(output_path+title+".txt",text)
def_get_link2file(output_path,url_author):
____content=get_web_content(url_author)
____p=MyHTMLParser()_
____p.feed(content)
____links_=p.get_link()
____#_save_list2file(output_path+"urls.txt",links)
____return_links
links_page1=get_link2file(output_path,url_author)_#用搜索忙总主题的首页链接搜索,返回第一页的所有链接
url_authors=[]_#其余主题页的链接
urls=[]_#_具体主题帖子的具体链接
for____link_in_links_page1:
____if_"showthread.php?"_in_link:
________urls.append(link)_#_保存搜索结果第一页中的每个主题帖链接
____else:
________url_authors.append(link)_#保存搜索结果第一页中显示的其余页的链接
#第一页的主帖链接搞定,其余搜索页的链接搞定
for_link_in_url_authors:_#对每个其余搜索页处理
____links_restpage=get_link2file(output_path,"http://www.fengyanforum.org/forum/"+link)_#_读取其余页的所有帖子链接
____for____link_in_links_restpage:
________if_"showthread.php?"_in_link:_#_只需要主帖子的链接了,不需要其余页的链接
____________urls.append(link)_
#至此所有页的主帖链接搜集完毕
for_url_in_urls:_#对每个主帖的链接处理,保存结果到主帖标题的文件名中去
____save_url2file(output_path,"http://www.fengyanforum.org/forum/"+url)_
(09-22-2011 10:07 PM)瓦斯 提到: _缘由:
忙总的学识确实令人佩服,他可以在很短时间内就胸有成竹地写出一篇完整的了好文章来,连错别字都几乎找不到。
1、不止一位网友制作了忙总的文集,供大家免费下载,特别感动。不知道他们是手工还是编程完成,总之都要花费不少精力和时间。
2、看到Adol自己编程手机西西河的数据,也很感兴趣。
3、忙总在丰言不断地有新帖子发出,我们需要一个自动程......
(09-24-2011 02:26 PM)井底望天 提到: _[quote='瓦斯' pid='29882' dateline='1316700449']
缘由:
忙总的学识确实令人佩服,他可以在很短时间内就胸有成竹地写出一篇完整的了好文章来,连错别字都几乎找不到。
1、不止一位网友制作了忙总的文集,供大家免费下载,特别感动。不知道他们是手工还是编程完成,总之都要花费不少精力和时间。
2、看到Adol自己编程手机西西河的数据,也很感兴趣。
3、忙总在丰言不��......
(09-23-2011 05:59 PM)瓦斯 提到: _程序改好了,在我这里试验10分钟之内可以下载忙总在丰言的121篇主题帖子。自动用忙总的帖子标题加上.txt作为文件名,默认保存到d:\wxmang目录中去。
如果你想试用,可以将下面的程序复制保存成d:\wxmang\wxmang.py,然后在一个DOS窗口中打入python d:\wxmang\wxmang.py就可以自动获得忙总所有的帖子了。
前提要求:你的电脑安装了python,这个程序不大,免费的,到处都可以下载到。
......
(10-12-2011 04:23 PM)madercf 提到: _盛赞楼主的工作!
提两点需求:
1)这个程序要是用到其它网站,比如西西河里会怎样?
2)对于一些人,可否设置定时或每隔一断时间去下载文章呢?
(10-12-2011 04:49 PM)瓦斯 提到: _感谢反馈!
1、现在还不能直接用到西西河,如果熟悉编程的人在此基础上修改后用到西西河应该没问题。
对于我这个凡人来说,用到西西河还有一个技术问题没�......
(10-12-2011 05:46 PM)madercf 提到: _解答真快!
我现在碰到的一些问题,在楼里下了几个版本都是这个情况,不知道是什么原因,只有0个链接;而且明明配置文件也在,不知道为什么说找不到。
问题的截图见下
(10-12-2011 11:27 PM)瓦斯 提到: _问题出在最近为了节省带宽把丰言的logo动态改成静态的时某些地方的修改。
把程序修改了一下,你式一下看可以吗?
现在忙总帖子有些都到了50页......
(10-13-2011 09:41 AM)madercf 提到: _试过,可以的!
但是仍有两个问题:
1)wxmang_etc_all_page.py和config.txt两个文件明明是放在同一个文件夹下的,为什么还是显示找不到config.txt呢?
2)查看已经下载的文件,发现点开的那一页可以打开;如果是第1页,那么点第2页、第n页,则打不开
......
(10-13-2011 03:03 PM)瓦斯 提到: _1、像你前面那个截图一样,如果你的当前目录是c:\python32那么程序也只在这里查找config.txt。如果你的当前目录在d:\wxmang那么config.txt也要放这里,运行命令可以是:c:\python32\python wxmang_etc_all_page.py。
2、因为网页上的第n页是相对链接,也就是说省略了前面很长的一串丰言网址(绝对地址),如果这个文件本身在丰言......