使用BS4,Python和Selenium后解析文本(Parse the text after using BS4, Python and Selenium)
使用我的scrape脚本后:
from selenium import webdriver from bs4 import BeautifulSoup import csv browser = webdriver.Firefox() browser.get('http://dyn.com/about/events/') html = browser.page_source soup = BeautifulSoup(html) titles = [tag.text for tag in soup.find_all('p','pubdate')]
我得到的结果如下:
[u'\ n \ n \ t \ t \ t \ BWEBINAR:如何扩大您的全球覆盖范围到中国\ xa0 \ n \ t \ t \ t \ n \ t \ t \ t设置22,2014 \ t \ t \ t \ nspeak \ n',u'\ n \ n \ t \ t \ t LAUNCH Scale \ u2013旧金山,CA \ xa0 \ n \ t \ t \ t \ n \ t \ t \ t \ tOct 23 - 24,2014 \ t \ t \ t \ nattend \ n',u'\ n \ n \ t \ t \ tAcquia参与用户会议\ u2013 Boston,MA \ xa0 \ n \ t \ t \ t \ n \ t \ t \ t \ t 3 - 5 ,2014 \ t \ t \ t \ nexhibitattend \ n',u'\ n \ n \ t \ t \ t \ tCloud Expo \ u2013圣克拉拉,加利福尼亚\ xa0 \ n \ t \ t \ t \ n \ t \ t \ tNov 4 - 6,2014 \ t \ t \ t \ nexhibit \ n',u'\ n \ n \ t \ t \ t \ 2014年全球运营商奖项\ u2013阿姆斯特丹\ xa0 \ n \ t \ t \ t \ n \ n \ t \ t \ tNov 4,2014 \ t \ t \ t \ n \ n',u'\ n \ n \ t \ t \ t \ t \ twit \ Summit \ u2013都柏林,爱尔兰\ xa0 \ n \ t \ t \ t \ n \ t \ t \ t \ tNov 4 - 6,2014 \ t \ t \ t \ n \ n \ n \ n',u'\ n \ n \ t \ t \ t \ t \ tVelocity Europe \ u2013巴塞罗那,西班牙\ xa0 \ n \ t \ t \ t \ n \ t \ t \ tNov 17 - 19,2014 \ t \ t \ t \ nexhibit \ n',u'\ n \ n \ t \ t \ tNH / VT第一届乐高联赛冠军赛\ xa0 \ n \ t \ t \ t \ n \ t \ t \ tDec 6,2014 \ t \ t \ t \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n“>
我是python的新手,所以你能建议我如何从这个结果中获取事件名称,日期,事件类型?
谢谢!
after using my scrape script:
from selenium import webdriver from bs4 import BeautifulSoup import csv browser = webdriver.Firefox() browser.get('http://dyn.com/about/events/') html = browser.page_source soup = BeautifulSoup(html) titles = [tag.text for tag in soup.find_all('p','pubdate')]
I have got the result that looks like:
[u'\n\n\t\t\tWEBINAR: How To Expand Your Global Reach To China\xa0\n\t\t\t\n\t\t\tOct 22, 2014\t\t\t\nspeak \n', u'\n\n\t\t\tLAUNCH Scale \u2013 San Francisco, CA\xa0\n\t\t\t\n\t\t\tOct 23 - 24, 2014\t\t\t\nattend \n', u'\n\n\t\t\tAcquia Engage User Conference \u2013 Boston, MA\xa0\n\t\t\t\n\t\t\tNov 3 - 5, 2014\t\t\t\nexhibitattend \n', u'\n\n\t\t\tCloud Expo \u2013 Santa Clara, CA\xa0\n\t\t\t\n\t\t\tNov 4 - 6, 2014\t\t\t\nexhibit \n', u'\n\n\t\t\tThe Global Carrier Awards 2014 \u2013 Amsterdam\xa0\n\t\t\t\n\t\t\tNov 4, 2014\t\t\t\n\n', u'\n\n\t\t\tWeb Summit \u2013 Dublin, Ireland\xa0\n\t\t\t\n\t\t\tNov 4 - 6, 2014\t\t\t\nspeak \n', u'\n\n\t\t\tVelocity Europe \u2013 Barcelona, Spain\xa0\n\t\t\t\n\t\t\tNov 17 - 19, 2014\t\t\t\nexhibit \n', u'\n\n\t\t\tNH/VT FIRST LEGO League Championship Event\xa0\n\t\t\t\n\t\t\tDec 6, 2014\t\t\t\nspeak \n']
I am new to python, so could you suggest how can I get Event Name, Date, Event Type from this result?
Thanks!
原文:https://stackoverflow.com/questions/26484951
最满意答案
您应该使用外部联接。
select A.ID, A.DataA1, A.DataA2, B.A_ID, B.DataB1, B.DataB2, C.A_ID, C.DataC1, C.DataC2 from A left join B on A.ID = B.A_ID left join C on A.ID = C.A_ID
有关SQL连接的详细解释, 请访问 : http : //www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
You should use an outer join.
select A.ID, A.DataA1, A.DataA2, B.A_ID, B.DataB1, B.DataB2, C.A_ID, C.DataC1, C.DataC2 from A left join B on A.ID = B.A_ID left join C on A.ID = C.A_ID
For a good explanation of SQL joins checkout: http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
相关问答
更多-
当child2没有行时,由于与child2表的内部联接,查询不返回任何行。 如果你内部连接到没有行的表,你将永远不会得到任何结果 - 如果你想在child2为空时得到结果,你必须外连接到child2。 当child2确实有一行时,查询返回结果的原因是因为where子句: WHERE child1.name = 'child1' OR child2.name = 'DOES NOT EXIST'; 内部连接表示child2中必须有匹配ID的内容,但where子句中包含OR,因此只能因为child1. ...
-
您应该使用外部联接。 select A.ID, A.DataA1, A.DataA2, B.A_ID, B.DataB1, B.DataB2, C.A_ID, C.DataC1, C.DataC2 from A left join B on A.ID = B.A_ID left join C on A.ID = C.A_ID 有关SQL连接的详细解释, 请访问 : http : //www.codinghorror.com/blog ...
-
两种可能的方法。 如果您有外键,请将其声明为on-delete-cascade并删除超过30天的父行。 所有的子行将被自动删除。 根据您的描述,看起来您知道要删除的父行并需要删除相应的子行。 你是否像这样尝试过SQL? delete from child_table where parent_id in ( select parent_id from parent_table where updd_tms != (sysdate-30) ...
-
一个父行,另一个表中的多个子行。(One parent row, multiple child rows in another table. How to get them all in one row?)[2023-07-31]
由于每个父项有一个可变数量的子项,因此在SQL可以完成的唯一方法是在单个记录中分隔所有礼品分号: SELECT p.*, GROUP_CONCAT(c.name, ': ', c.gift1, ', ', c.gift2, ', ', c.gift3 SEPARATOR ';') FROM parents p JOIN children с ON c.parent_id = p.id GROUP BY p.id 这会给你这样的东西: parent chil ... -
尝试这个: ;WITH CTE(ID, NAME, PARENT_ID, SORT_ORDER, [Level], ord) AS ( SELECT c.ID, CONVERT(nvarchar(100), c.NAME), c.PARENT_ID, c.SORT_ORDER, 1 [level], CONVERT(nvarchar(255), RIGHT('0000' + CONVERT(nvarchar(255), c.ID), 4)) AS ord ...
-
执行此操作的最佳方法之一是使用stored procedure 。 以下程序将为您完成一切。 CREATE OR REPLACE PROCEDURE set_stud_unit( i_fname IN VARCHAR2, i_lname IN VARCHAR2, i_unitid IN VARCHAR2) IS l_studentid student.studentid%TYPE; BEGIN INSERT INTO stu ...
-
为了选择几行 ,这应该是最快的: SELECT o.ID ,o.OrderNum ,CASE WHEN EXISTS (SELECT * FROM dbo.FileHeader f WHERE f.OrderID = o.ID) THEN 1 ELSE 0 END AS FilesHExist FROM Order o; 对于包含大部分 dbo.FileHeader的SELECT,这应该会更好: SELECT o. ...
-
一个有趣的问题,但很难准确回答,因为有许多变量定义了可能适用或不适用的最佳解决方案。 以下是基于以下假设的一种方法 - 您不需要数据库代码可移植。 csv由头部构成,或者至少属性名称是已知和固定的。 产品表中的sku(或name / sku组合)具有唯一约束。 同样,EAV表对product_id和attr_name有唯一约束 推论 - 你没有指定,但我也假设EAV表有一个属性名称的字段。 这个过程归结为 - 通过尽可能最快的路径将数据加载到数据库中 在加载期间或之后,将csv从表格结构展开到EAV结构 “ ...
-
如何查询子表值(How to query child tables values)[2022-11-20]
尝试这个; var result = poHeaders.Where(e => e.PODetails.Any(a => a.ItemId == intItemId)); Try this; var result = poHeaders.Where(e => e.PODetails.Any(a => a.ItemId == intItemId)); -
这是一种方法 - 建立orderid的所有组合,然后使用EXCEPT消除不匹配的订单。 我假设LineNum与'确切'比较无关。 -- Build up all combinations of orders WITH orderPairs AS ( select o1.orderid as orderid1, o2.orderid as orderid2 from orders o1 cross join orders o2 where o1.ord ...