鉴于一些随机新闻文章,我想编写一个网络爬虫来查找最大的文本正文,然后将其解压缩.目的是提取页面上的实体新闻文章.
最初的计划是使用a 并按其BeautifulSoup findAll(True).getText()值对每个标记进行排序.编辑:不要将它用于html工作,使用lxml库,它是基于python的,比BeautifulSoup快得多.命令(表示提取所有html标签)
但这对大多数页面都不起作用,例如我列举的那个页面,因为大量的文本被分成许多较小的标签,例如段落分隔符.
有人对这个有经验么?任何有关此类事情的帮助都会令人惊叹.
目前我正在使用BeautifulSoup和python,但愿意探索其他可能性.
这里有一些致命的有用的python库,按照它对我帮助程度的排序顺序完成任务:
如果有兴趣,我会发布基准测试.
间接相关的库,你应该安装它们并阅读他们的文档:
使用python(一种相当慢的语言)的许多价值和力量来自它的开源库.当它们结合使用时,它们特别棒,每个人都应该利用它们来解决它们可能遇到的任何问题!
鹅图书馆得到了很多可靠的维护,他们只是添加了阿拉伯语支持,这太棒了!
以前有关于此的帖子在网络上,但是所提出的解决方案都没有实际适用于我的场景.
我有一个子页面,它们都有自己独特的og标签,以及一个带有自己的og标签的父根域页面,所有这些都可以被Facebook抓取,这样人们就可以在发布时看到描述/图像.
但是,当我在框中发布我的孩子网址时,结果明显证明facebook已经抓取了父网页.甚至"看到我们的刮板看到的确切"页面也确认了这一点,因为它只显示了父模板.
这是fb's scrapper的链接:https://developers.facebook.com/tools/debug
以下是根域html模板中的og标记:假设父文件是www.me.com假设有一个孩子是www.me.com/path/path
<head> ...
<meta name="keywords" content="...">
<meta name="description" content="..." />
<meta property="fb:app_id" content="..."/>
<meta property="og:site_name" content="..." />
<meta property="og:type" content="website" />
<meta property="og:title" content="..." />
<meta property="og:image" content="..." />
<meta property="og:description" content="..." />
<meta property="og:url" content="http://www.me.com" />
Run Code Online (Sandbox Code Playgroud)
以下是子html模板中的og标记:
<head> ...
<meta name="keywords" content="...">
<meta name="description" content="..." />
<meta property="fb:app_id" content="..."/>
<meta property="og:site_name" content="..." />
<meta property="og:type" content="article" />
<meta property="og:title" content="..." />
<meta property="og:image" content="..." />
<meta property="og:description" content="..." />
<meta property="og:url" …Run Code Online (Sandbox Code Playgroud) 在尝试在我的django项目上设置芹菜时,我对这两个应用程序之间的差异感到困惑.
两者之间有什么区别?在线阅读教程时,我看到它们都被使用了,我不确定哪种对我最好.似乎djcelery有点像芹菜,但为django量身定做?但是,当djcelery这样做时,celery不需要包含在已安装的应用程序中.
谢谢
我假设它只会被加载到settings.py中,然后该对象将从设置中导入,但我只是想知道是否有更标准或推荐的方法来执行此操作.人们通常在哪里装载他们整个项目需要看到的物品?
防爆.
# settings.py
...
something_large = json.loads(...)
# whatever models.py, views.py, etc
from Project.settings import something_large #Is this the proper way to do it?
Run Code Online (Sandbox Code Playgroud)
谢谢.
在该接口的文档中,它声明文本节点都返回"#text"作为其名称而不是实际的标记名称.但是对于我正在做的事情,标签名称是必要的.
// I'm using the following imports
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
// In the .xml input file
<country>US</country> // This is a "text node" .getTextContent()
// returns "US", I need "country" and .getNodeName()
// only returns "#text"
Run Code Online (Sandbox Code Playgroud)
我怎么能访问标签名称?这必须是某种可能的,我不介意一个hackish解决方案.
文档:
http://www.w3schools.com/dom/dom_nodetype.asp
http://www.w3.org/2003/01/dom2-javadoc/org/w3c/dom/Node.html
谢谢.
在 VIM 中,我使用了其他人的默认主题并进行了调整。左侧边沟的颜色是深灰色,这使得很难看到我的边沟的内容(在这种情况下是vim-gitgutter)。
例子:

如何更新 .vimrc 以更改此颜色?
谢谢
为了避免omega(nlogn)所有基于比较的排序的下界,我们在课堂上学习了一堆新的非比较排序。但对我来说有点不清楚的是什么时候使用哪种排序算法系列的优点和缺点。
不能调整任何数据集以便可以使用非比较排序算法(基数、桶、键索引)吗?如果是这样,那么即使存在比较排序又有什么意义呢?
很抱歉这是一个如此基本的问题,但我真的在网上找不到任何东西。
不确定这是否可行,但在python中有一个hash()函数,它接受一个字符串或一个整数,并生成该输入的[EDIT not-unique]整数表示.
我的问题是(在线搜索后),如何将生成的整数反转回原始字符串.
谢谢.
这是我的线程设置。在我的机器上,最大线程数为2047。
class Worker(Thread):
"""Thread executing tasks from a given tasks queue"""
def __init__(self, tasks):
Thread.__init__(self)
self.tasks = tasks
self.daemon = True
self.start()
def run(self):
while True:
func, args, kargs = self.tasks.get()
try:
func(*args, **kargs)
except Exception, e:
print e
self.tasks.task_done()
class ThreadPool:
"""Pool of threads consuming tasks from a queue"""
def __init__(self, num_threads):
self.tasks = Queue(num_threads)
for _ in range(num_threads):
Worker(self.tasks)
def add_task(self, func, *args, **kargs):
"""Add a task to the queue"""
self.tasks.put((func, args, kargs))
def wait_completion(self):
"""Wait for completion …Run Code Online (Sandbox Code Playgroud) 我需要通过逐行流式传输读取python中的输入文本文件.这意味着逐行加载文本文件而不是一次加载到内存中.但我的行分隔符不是空格,它们是任意字符.
这是Stack Overflow上用于逐行加载文件的方法:
with open("log.txt") as infile:
for line in infile:
do_something_with(line)
Run Code Online (Sandbox Code Playgroud)
以上是完美的,但我需要将分隔符从空格更改为不同的字符.
如何才能做到这一点?谢谢.